/// <summary>
        /// 复制一个行数据
        /// </summary>
        /// <param name="myCopyedDataGridViewRow"></param>
        /// <returns></returns>
        public DataGridViewRow CopyDataGriViewRow(DataGridViewRow myCopyedDataGridViewRow)
        {
            DataGridViewRow myNewDataGridViewRow = myCopyedDataGridViewRow.Clone() as DataGridViewRow;            for(int i = 0; i < myCopyedDataGridViewRow.Cells.Count;i++)
            {
                myNewDataGridViewRow.Cells[i].Value = myCopyedDataGridViewRow.Cells[i].Value;
            }
            return myNewDataGridViewRow;
        }如果数据不为空,完全可以使用,但数据为空时,也能判断出空值,也能复制过去。
但在排序时,因为我复制后的dataGridView不再时绑定了,有空类型后就不能进行排序。
并且我发现把这个复制后的行添加到DataGridView上去之后,这个行的DataGridView属性竟然为Null。
请问各位高手怎么回事?
谢谢!!

解决方案 »

  1.   

    用DataSet.DataTable加,然后用ds.Tables[0].DefultView重新绑定?
    别外 没值时,Cells[i].Value会有异常的
      

  2.   

    这样 效率可是个大问题, 你是说把DataTable 的每行转换成一个模型对象,然后再把某型对象一个个写到DataGridview上进行显示。以前我也这么做过。后来他麻烦 就否定了。而且 。net推荐的方式也是DataTable优于对象模型列表。只是我现在做的这个东西开始的时候没写好,其实应该是逻辑处理(行复制)在DataTable里面进行,我都放到DataGridview中了。所以才遇到了这个问题。当我们显示部分信息列表时  没必要把所有的对象模型的所有属性都读出来,3楼的多的对,但一般大家时不会这么做的。
      

  3.   

    为什么要操作两个datagridview呢,可以考虑直接把datagridview中的某一行直接赋给一个新的datarow不可以吗?
      

  4.   

    同意楼上的观点。直接把某一行的记录从DataGridView中赋值去DataRow。