当前位置:  开发笔记 > 编程语言 > 正文

优化绑定到DataGridView的DataTable的更新

如何解决《优化绑定到DataGridView的DataTable的更新》经验,为你挑选了1个好方法。



1> BFree..:

您可以尝试在DataTable上使用Merge方法.我将尝试创建一个简单的演示应用程序并在此处发布,但这个想法很简单.如果要更新网格,请将结果查询到新的DataTable,然后将旧表与新表合并.只要两个表都有主键(如果它们不从DB返回,您可以将它们创建为内存),那么它应该跟踪更改并无缝更新DataGridView.它还具有不会丢失用户在网格上的位置的优点.

好的,这是一个样本.我创建了一个带有两个按钮和一个dataGridView的表单.在按钮1上单击,我用一些数据填充主表,并将网格绑定到它.然后,在第二次单击时,我创建具有相同模式的另一个表.向其添加数据(一些具有相同的主键,一些具有新的主键).然后,他们将它们合并回原始表.它按预期更新网格.

    public partial class Form1 : Form
    {
        private DataTable mainTable;
        public Form1()
        {
            InitializeComponent();
            this.mainTable = this.CreateTestTable();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 1; i <= 10; i++)
            {
                this.mainTable.Rows.Add(String.Format("Person{0}", i), i * i);
            }

            this.dataGridView1.DataSource = this.mainTable;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            DataTable newTable = this.CreateTestTable();
            for (int i = 1; i <= 15; i++)
            {
                newTable.Rows.Add(String.Format("Person{0}", i), i + i);
            }
            this.mainTable.Merge(newTable);
        }

        private DataTable CreateTestTable()
        {
            var result = new DataTable();
            result.Columns.Add("Name");
            result.Columns.Add("Age", typeof(int));
            result.PrimaryKey = new DataColumn[] { result.Columns["Name"] };

            return result;

        }
    }

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有