绑定和搜索大型DataTable

时间:2011-10-13 10:31:42

标签: wpf serialization datatable

我在WPF中实现了自动完成下拉列表

当大数据(例如超过30 MB)绑定到它时会出现问题

处理大数据的最佳方法是什么(搜索等操作)

是否可以序列化30 MB数据,并且可以在自动完成下拉列表中搜索用户类型,搜索

进入序列化数据并将结果数据附加到下拉列表并显示给用户

请建议......

2 个答案:

答案 0 :(得分:0)

通常,您应该在BackgroundWorker.DoWork事件处理程序中放置耗时的操作,而不是如上所述设置控件属性。如果要设置在BackgroundWorker.DoWork事件处理程序中的另一个线程中创建的控件属性,则应使用Control.Invoke方法异步设置属性。以下代码是更好的解决方案:

   toolStripStatusLabel1.Text = "Loading ... ";


enter code here` backgroundWorker1.RunWorkerAsync();

enter code here`backgroundWorker1_DoWork(/*arguments*/)
{
// getting data from database and fill dataset
}

backgroundWorker1_RunWorkerCompleted(/*arguments*/)
{
            dt_kh = ds.Tables[0];

            cboMaKH.DataSource = ds.Tables[0];
            cboMaKH.DisplayMember = "MaKH";
            cboMaKH.ValueMember = "MaKH";


            cboTenCty.DataSource = ds.Tables[0];
            cboTenCty.DisplayMember = "TenCty";
            cboTenCty.ValueMember = "TenCty";

            cboMaKH.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
            cboMaKH.AutoCompleteSource = AutoCompleteSource.CustomSource;
            cboMaKH.AutoCompleteSource = AutoCompleteSource.ListItems;
            cboTenCty.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            cboTenCty.AutoCompleteSource = AutoCompleteSource.CustomSource;
            cboTenCty.AutoCompleteSource = AutoCompleteSource.ListItems;

            txtTenKH.DataBindings.Add("Text", ds.Tables[0], "TenKH");
            txtDiaChi.DataBindings.Add("Text", ds.Tables[0], "Diachicty");
            txtDienThoai.DataBindings.Add("Text", ds.Tables[0], "DienThoaiCty");
            txtTaiKhoan.DataBindings.Add("Text", ds.Tables[0], "TaiKhoanCty");
            txtVIMST.DataBindings.Add("Text", ds.Tables[0], "MSTCty");
}

答案 1 :(得分:0)

使用ICollectionView.Filter的自动填充文本框是否可以搜索值?

如果是,那么大型数据集同步的速度肯定很慢。

使用PLINQ对您有利。

当用户在文本框中键入文本时,对以#开头的条目执行PLINQ查询,包含键入的文本,然后在PLINQ查询返回后重新绑定itemssource。

如果你不能使用PLINQ或者没有.Net 4.0,那么在另一个线程上执行简单的LINQ搜索并重新绑定自动完成框的Dispatcher

相关问题