C#.NET winform DataGrid 空表的时候出现 索引超出了数组界限?

来源:百度知道 编辑:UC知道 时间:2024/06/09 14:34:37
C#.NET WINFORM 窗口做了个DataGrid显示数据库中一个表的全部记录功能有更新、插入、删除等,myGrid.DataSource = objDataSet.Tables[0].DefaultView,其他语句不写出来了,需要的话说一下,我再写出来。
表里有记录的时候,一切正常;当表里没有记录的时候,窗口打开后弹出两个“索引超出了数组界限”的窗口,而且关掉一个又弹出一个;或者通过删除操作把记录全部删除后,再用鼠标去点击DataGrid控件时,也会弹出“索引超出了数组界限”的窗口,而且也是关掉一个又弹出一个。
这个问题怎么解决,请知道的人帮帮忙。
代码就不贴出来了,因为我发现是我用了网上康济强写的多功能DataGrid才出现这个问题的,现在我改为系统提供的DataGrid就没有这个问题了,但还是希望知道这个多功能DataGrid的问题所在,或者有人能提供更好的DataGrid吗?回答的好就给分后关闭问题了。

在有操作datagrid的地方写上:
if(this.Datagrid1.Rows.Count>0)
{
//然后再进行操作
}
else
{
MessageBox.Show("空数据");
}

索引超出了数组界限 是因为你DataGrid中没有信息,但是却有东西引用了它里面的内容,比如说窗体一加载的时候,你让某个文本框中显示了DataGrid中第一条的信息,或者让第一条信息默认处于选中状态,反正就是有地方在用到它里面的信息,而它里面没有信息,所以就“索引超出了数组界限”

用一个try
{
内容
}
catch
{
什么也不写
}
就好了

这段代码放在你引用到DataGrid.selectedIndex这东西的时候用,反正就是你什么时候需要引用用到DataGrid里面的行的时候就用

这条语句
myGrid.DataSource = objDataSet.Tables[0].DefaultView;
改成
if(objDataSet.Tables[0].Rows.Count>0)
{
myGrid.DataSource = objDataSet.Tables[0].DefaultView;
}
搞定!

看来好像是objDataSet.Tables是空的,

if ( objDataSet.Tables.Count == 0 )
{
...
}
检查一下

代码贴出来吧。