DataGridView 索引,添加列

问题1:DataGridView绑定DataTable之后,在界面排序,选择若干行,此时选中的行的index与DataTable中的index不一致,这样若想要对其对应的行进行修改操作,将会造成错误。

Sol: 首先将选中的DataGridView行的DataBoundItem属性转换为DataRowView, 然后通过对应的DataTable中的取出索引。

1 DataRowView drv = dataGridView.SelectedRows[0].DataBoundItem as DataRowView;
2 int index = dataTable.Rows.IndexOf(drv.Row);

这是因为DataRowView对象中,有一个Row属性,获取正被查看的 DataRow,那么就可以在DataRow所在的表中找到它的索引啦。

 

问题2:为什么foreach遍历DataTable或者DataGridView对行进行增删修改的操作,会造成索引错误的问题?

Sol: 这是因为foreach循环是从第一位开始遍历,如果对某一行进行删除操作,那么该行后面的DataRow(DataGridViewRow)的索引会提前一位,也即是说,DataRow(DataGridViewRow)的index是会实时变化的,因此会出错。比如索引为3被删除,那么删除后4的索引就变成3了,又一次循环时原先索引为4的就被跳过不操作了(因为此时操作索引为4的,也即原先索引为5)。

如果需要对行进行删除,那么要从表尾开始操作起,这样删除任一行,对前面的DataRow(DataGridViewRow)的索引就没有影响了。

问题3:DataTable添加列之后,如何确定是否为Null或者空字符串?

Sol: 在作判断的时候经常需要对其判断是否为Null 或者 string.Empty,如果Null和 String.Empty的处理结果是一样的,那么可以在添加列的时候,设置其DefaultValue。

dt.Columns["a"].DefaultValue = string.Empty;

 

转载于:https://www.cnblogs.com/kingsleylam/archive/2013/03/12/2954903.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值