DataRowCollection使用过程中莫名错误?有时出现提示索引X找不到,详细请进 for(int i=0;i<dataGridName.Items.Count;i++)改成foreach()循环试一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以试着把DataGrid中的行号设置为不显示,看一下。因为,我以前也遇到过这种情况。在设为不显示的情况下,它应该不会出问题,但我也知道,这并不是最根本的解决方法。 after a deletion, all the DataRows behind i will move up by one, tryfor(int i=dataGridName.Items.Count-1;i>=0;i--) cocosoft(pengyun):DataGrid中的行号?指的是那一个? 删除后,你的Items.Count就减少了一,所以,你的循环应该重新开始吧!在rc[i].Delete()之后,应该再加上一句:--i;因为你是在for循环里面取的Items.Count,所以就不用count-1了。不过,这样效率很慢。我想应该这样:int count = dataGridName.Items.Count;for(int i=0;i<count;i++){ //... rc[i].Delete(); count--; --i;} #region 得到数据行在当前绑定的数据源中的索引号 /// <summary> /// 得到数据行在当前绑定的数据源中的索引号 /// </summary> public int GetRowIndex(object PrimarID,DataSet ds,string TableName) { try { DataRowCollection rc = ds.Tables[TableName].Rows; DataRow row = rc.Find(PrimarID); if (row == null) return -1; DataViewManager dvm = new DataViewManager(ds); DataView dataView = dvm.CreateDataView(ds.Tables[TableName]); for(int i = 0; i < dataView.Count ; i++) { if (dataView[i].Row[1].ToString() == row[1].ToString()) return i; } return -1; } catch(Exception Ex) { MessageBox.Show("错误原因: "+Ex.Message.ToString(),"错误",MessageBoxButtons.OK,MessageBoxIcon.Error); return -1; } } #endregion 求C#高手解释 做一个聊天工具,遇到的一些问题。 如何判断多个按键被按下? C#winform重载close的函数怎么写 请指教 请问,我如何才能把SQL数据库中的数据保存成Access数据库的MDB文件 在aspx文件里写后台C#代码时没有提示? C#里怎样让一个事件函数让按钮数组点击并能根据按钮下标实现不功能 如何用程序实现自动设置IE"安全选项"中“自定义”中的项 请教随机函数 Socket如何连接腾讯云服务器 急! 关于C#的安装和运行,请指教 求助,关于toolbar!
因为,我以前也遇到过这种情况。
在设为不显示的情况下,它应该不会出问题,但我也知道,这并不是最根本的解决方法。
因为你是在for循环里面取的Items.Count,所以就不用count-1了。不过,这样效率很慢。我想应该这样:int count = dataGridName.Items.Count;for(int i=0;i<count;i++){
//...
rc[i].Delete();
count--;
--i;
}
/// <summary>
/// 得到数据行在当前绑定的数据源中的索引号
/// </summary>
public int GetRowIndex(object PrimarID,DataSet ds,string TableName)
{
try
{
DataRowCollection rc = ds.Tables[TableName].Rows;
DataRow row = rc.Find(PrimarID);
if (row == null) return -1; DataViewManager dvm = new DataViewManager(ds);
DataView dataView = dvm.CreateDataView(ds.Tables[TableName]);
for(int i = 0; i < dataView.Count ; i++)
{
if (dataView[i].Row[1].ToString() == row[1].ToString()) return i;
} return -1;
}
catch(Exception Ex)
{
MessageBox.Show("错误原因: "+Ex.Message.ToString(),"错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
return -1;
}
}
#endregion