返回首页
当前位置: 主页 > 编程语言 > C#教程 >

Dev Gridcontrol删除数据后,获取当前行数据时出错

时间:2015-08-31 22:57来源:电脑教程学习网 www.etwiki.cn 编辑:admin

今天遇到一个问题就是在使用dev gridcontrol实现删除后,再通过gridView1_FocusedRowChanged事件同步获取当前行gridView1.GetFocusedRowCellValue("名称").ToString()值的时候,报错了下面的这个错误:

异常信息(异常类型:System.NullReferenceException)
异常信息:Object reference not set to an instance of an object.
引发当前异常的方法:Void gridView1_FocusedRowChanged(System.Object,DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs)
出错代码位置:

private void BingingData()
{
DataTable dtParameter = new DataTable("Parameter");
ds1 = gs.getConfig("");
dtParameter.Columns.Add("名称");
dtParameter.Columns.Add("内容");
if (judge_ds(ds1))
{
for (int i = 0; i < ds1.Tables[0].Columns.Count; i++)
{
dtParameter.Rows.Add(ds1.Tables[0].Columns[i].ToString(), ds1.Tables[0].Rows[0][i].ToString());
}
}
gridControl1.DataSource = dtParameter;
}

在执行到gridControl1.DataSource = dtParameter;时,回跳转到gridView1_FocusedRowChanged函数

private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
{
if (gridView1.FocusedRowHandle > -1)
{
txtName.Text = gridView1.GetFocusedRowCellValue("名称").ToString();
txtContent.Text = gridView1.GetFocusedRowCellValue("内容").ToString();
}
}

在进入到if循环后,获取当前行的时候会报出上面的错误。
原因分析:
在删除后,指针指向的那条数据已经不错,所以在用GetFocusedRowCellValue获取当前行值的时候,会出现找不到相应行的错误信息。
解决方案:
在删除数据后,绑定数据之前将指针指向第一行。

gs.OperateXml(gridView1.GetFocusedRowCellValue("名称").ToString(),gridView1.GetFocusedRowCellValue("内容").ToString());
gridView1.MoveFirst();
BingingData();

或者在获取到要删除的行后,强制修改焦点行。

if (this.gViewActList.FocusedRowHandle > 0)
{
this.gViewActList.FocusedRowHandle = this.gViewActList.FocusedRowHandle - 1;
}

 

Dev Gridcontrol删除数据后,获取当前行数据时出错
 

 

------分隔线----------------------------
标签(Tag):c# c#技巧 c#实例教程 c#源代码 c#基础教程
------分隔线----------------------------
推荐内容
猜你感兴趣