日期:2014-05-16  浏览次数:21044 次

克隆DataGridViewRow后,无法使用列名访问?
 
        public static DataGridViewRow CloneRow(DataGridViewRow row)
        {
            DataGridViewRow clonedRow = (DataGridViewRow)row.Clone();

            for (int i = 0; i < row.Cells.Count; i++)
            {
                clonedRow.Cells[i].Value = row.Cells[i].Value;
            }

            return clonedRow;
        }

        private void button1_Click(object sender, EventArgs e)
        {
          DataGridViewRow row=  CloneRow(dataGridView1.Rows[0]);
          Console.WriteLine(dataGridView1.Rows[0].Cells["abc"].Value.ToString()); 
          Console.WriteLine(row.Cells["abc"].Value.ToString());
        }


点击按钮执行结果异常:未能找到名为 abc 的列。第一句输出没有问题,第二句却提示找不到列名。
可见克隆后无法使用列名进行访问,如果将第二句输出改为
Console.WriteLine(row.Cells[0].Value.ToString()); 

 则程序没有问题,请教大侠们如何确保在克隆后仍可以使用列名进行访问。 
------解决方案--------------------
本帖最后由 bdmh 于 2014-02-27 17:09:07 编辑
你有没有指定列名,当然不行了,你只是复制了value
你要为column起名才可访问,循环一下row的columns,然后对name赋值
------解决方案--------------------
引用:
你有没有指定列名,当然不行了,你只是复制了value
你要为column起名才可访问,循环一下row的columns,然后对name赋值

赞一个
------解决方案--------------------
先定义列名,再循环给值,再取值
------解决方案--------------------
你要为column起名才可访问,循环一下row的columns,然后对name赋值