2011-12-10 7 views
0

私はをDataTableに設定したDevexpress.XtraGrid.GridControlを持っています。私はまた、同じDataTableにdatabindng持っているいくつかの他のコントロールがあります。これはうまくいくので、GridViewの選択された行が変更されると、コントロールに変更が反映されます。Devexpress:完全にフィルタ処理されたGridControlのバインドされたコントロールを消去します。

ただし、GridControlGridViewにはActiveFilter.NonColumnFilterが設定されています。このフィルタは、フォームが使用されると変更されます。場合によっては、フィルタはGridControlに行が表示されないように設定されます。これが発生すると、DataTableにバインドされたコントロールはクリアされず、最後に選択された行のデータが表示されます。

バインドされたコントロールにクリアするよう指示する簡単な方法がありますか、手動ですべてをクリアしてクリアする必要がありますか?

以前はフィルタリング対象の行に実際に追加して削除したDataTableを使用していました。テーブルがクリアされた場合、すべてのバインドされたコントロールも同様でした。だから私はそれが可能であると仮定している。

答えて

0

私はこの問題についてDevExpress社に連絡しresponseを受け取っ:

ご質問をいただき、ありがとうございます。グリッドが完全にフィルタされ、行が含まれていない場合、バインド元の現在の項目を設定することはできません。

この問題を解決するには、データソースレベルでデータをフィルタリングすることをお勧めします。この情報を使用して

、私は私のフィルタリングのニーズにGridView.ActiveFilter.NonColumnFilterを使用してから変更し、代わりにDataTable.DefaultView.RowFilterを使用。それは私の問題を解決したようです。

これは、彼らが私を与えた例とは異なっていた:

BindingSource bs = new BindingSource(); 
DataView dv = new DataView(); 

DataTable dt = CreateTable(10); 
dv = new DataView(dt); 
bs.DataSource = dv; 

gridControl1.DataSource = bs; 
textEdit1.DataBindings.Add("EditValue",bs,"Name"); 
textEdit2.DataBindings.Add("EditValue", bs, "ID"); 

あなたは、フィルタを設定するには、これを呼び出すことができます。

dv.RowFilter = "ID = 50"; 
関連する問題