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实现
我是这样做的:
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);
}
} 简化一下,就是这样的。
DataRowView drv = (DataRowView)e.Row;
DataRow row = drv.Row;
this.projectTableTableAdapter.Update(row);
事实上,devExpress更新数据,并不是很容易。
如果你保留他我做好的那个工具条,点那个保存就可以了。
否则,你就需要用上面那行代码。
从我写的代码看出,gridViewProject.UpdateCurrentRow();
这样是不行的,这样只是把界面的数据写到了内存中,不是写入数据库。
如果有疑问,可以再联系我。 haoyujie 发表于 2014-8-27 10:01
简化一下,就是这样的。
DataRowView drv = (DataRowView)e.Row;
DataRow row = drv.Row; ...
非常感谢!先试试!初学!
页:
[1]