ahat 发表于 2014-8-26 17:32:36

gridview修改好后保存用什么代码?

以下代码不灵,保存不了!高手指点一下!谢谢!1)Dev控件GridControl 的使用1、确认当前正在编辑的单元格的输入
this.gridview1.CloseEditor();2、保存当前行的值到数据源
this.gridview1.UpdateCurrentRow();3、通过数据适配器把修改更新到数据库
sqlDataAdapter1.Update(myDataSet, "MyTable")
//此时直接通过DataAdapter执行Update就可以按照1,2,3的步骤执行;也可以通过1,2步骤然后通过Sql实现

haoyujie 发表于 2014-8-27 09:23:24

我是这样做的:
      private void gridViewProject_RowUpdated(object sender, DevExpress.XtraGrid.Views.Base.RowObjectEventArgs e)
      {
            //gridViewProject.UpdateCurrentRow();
            try
            {
                DataRowView drv = (DataRowView)e.Row;
                DataRow row = drv.Row;

                UpdateProject(row);

            }
            catch (System.Exception ex)
            {
                MyErrExcu.E(ex);
            }
      }


      void UpdateProject(DataRow row)
      {
            //gridViewProject.UpdateCurrentRow();
            try
            {
                string strProjectName = "";

                //Trace.Assert(row.RowState != DataRowState.Unchanged);
                if (row.RowState == DataRowState.Unchanged)
                {
                  return;
                }
                if (row.RowState == System.Data.DataRowState.Added)
                {
                  //不允许添加重名项目
                     strProjectName = row["ProjectGroupName"].ToString();
                  if (this.projectTableTableAdapter.GetDataByProjectName(strProjectName).Count > 0)
                  {
                        MessageBox.Show("存在重复的项目");
                        return;
                  }
                }
                else if (row.RowState == System.Data.DataRowState.Modified)
                {
                  //不允许改到一个重名的项目

                  //不允许添加重名项目
                  strProjectName = row["ProjectGroupName"].ToString();
                  LMISV1DataSet.ProjectTableDataTable tmpTable = this.projectTableTableAdapter.GetDataByProjectName(strProjectName);

                  if (tmpTable.Count > 0)
                  {
                        //检查是不是自己所在的行,如果不是,则报错
                        int nCurProjectId = Convert.ToInt32(row["ProjectID"].ToString());
                        LMISV1DataSet.ProjectTableRow curRow = (LMISV1DataSet.ProjectTableRow)tmpTable.Rows;

                        if (nCurProjectId != curRow.ProjectID)
                        {
                            //int hRowHandle = e.RowHandle;
                            //object objRowId = gridViewProject.GetRowCellValue(hRowHandle, "ProjectID");
                            //if (null != objRowId)
                            //{
                            //    int nCurProjectId = Convert.ToInt32(objRowId);
                            //}

                            MessageBox.Show("存在重复的项目");
                            return;
                        }

                  }
                }
                else
                {

                }

                this.projectTableTableAdapter.Update(row);
                UpdateRelCaption(strProjectName);

            }
            catch (System.Exception ex)
            {
                MyErrExcu.E(ex);
            }
      }

haoyujie 发表于 2014-8-27 10:01:39

简化一下,就是这样的。
DataRowView drv = (DataRowView)e.Row;
               DataRow row = drv.Row;
this.projectTableTableAdapter.Update(row);
事实上,devExpress更新数据,并不是很容易。
如果你保留他我做好的那个工具条,点那个保存就可以了。
否则,你就需要用上面那行代码。
从我写的代码看出,gridViewProject.UpdateCurrentRow();
这样是不行的,这样只是把界面的数据写到了内存中,不是写入数据库。
如果有疑问,可以再联系我。

ahat 发表于 2014-8-27 13:15:05

haoyujie 发表于 2014-8-27 10:01
简化一下,就是这样的。
DataRowView drv = (DataRowView)e.Row;
               DataRow row = drv.Row; ...

非常感谢!先试试!初学!
页: [1]
查看完整版本: gridview修改好后保存用什么代码?