zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    MVC设计模式
    二十三种设计模式
    描绘质量属性的六个常见属性场景。
    《架构漫谈》读后感
    软件架构师的工作过程
    《架构之美》阅读笔记06
    《架构之美》阅读笔记05
    《架构之法》阅读笔记04
    《架构之美》阅读笔记03
    《构架之美》阅读笔记02
  • 原文地址:https://www.cnblogs.com/kingsleylam/p/2954903.html
Copyright © 2011-2022 走看看