我已經實現自動完成下拉列表中的WPF綁定和搜索大型數據表
這是給問題,當一個大的數據(超過30 MB說的)是綁定到它
什麼是最好的方法在大數據工作(如搜索操作)
是否有可能連載30點MB的數據,並在自動完成下拉列表的用戶類型,搜索
到串行數據,重視結果數據下拉列表和顯示它給用戶
請建議...
我已經實現自動完成下拉列表中的WPF綁定和搜索大型數據表
這是給問題,當一個大的數據(超過30 MB說的)是綁定到它
什麼是最好的方法在大數據工作(如搜索操作)
是否有可能連載30點MB的數據,並在自動完成下拉列表的用戶類型,搜索
到串行數據,重視結果數據下拉列表和顯示它給用戶
請建議...
通常你應該把耗時的操作在BackgroundWorker.DoWork事件處理程序不設置如上控件的屬性。如果要設置在BackgroundWorker.DoWork事件處理程序的另一個線程中創建的控件的屬性,則應該使用Control.Invoke方法異步設置屬性。 nevertherless下面的代碼是更好的解決方案:
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");
}
是使用ICollectionView.Filter
您自動完成的文本框來搜索值?
如果是,那麼對於大數據集是同步的,它肯定會很慢。
使用PLINQ您的優勢。
當用戶在文本框中鍵入文本時,對以\開頭的條目執行PLINQ查詢,該條目包含鍵入的文本,然後在PLINQ查詢返回後重新綁定itemssource。
如果你不能使用PLINQ或者沒有.Net 4.0,那麼在不同的線程上執行簡單的LINQ搜索並重新綁定自動完成框的Dispatcher
。
嗨,感謝您的評論。但是如果我在應用程序中獲取大約30 MB的數據,應用程序內存將增加。所以在客戶端獲取所有數據是否可行? – MMP
是的,爲什麼不呢?這是一個桌面應用程序正確嗎?對於32位系統,至少擁有4GB的虛擬內存。 –