c#
  • .net-4.0
  • ado.net
  • datagridview
  • rowfilter
  • 2012-04-13 8 views 3 likes 
    3

    DataGridViewをフィルタリングしようとしています.DataSourceはDataSetです。グリッドがフィルタリングされないと、すべての行がまだ表示されているがDataGridViewをフィルタリングします。

    DataTable dt = (dataGridViewMain.DataSource as DataSet).Tables[0]; 
    dt.DefaultView.RowFilter = "CustomerName = 'My Customer'"; 
    

    は、だから私は、グリッドをフィルタリングするために、次の行を使用しています。私は何が欠けていますか?

    +0

    これは私の問題を解決していません – user1131661

    答えて

    2

    グリッドを再バインドする必要があります。

    var view=GetDataSet().Tables[0].DefaultView 
    view.RowFilter = "CustomerName = 'My Customer'"; 
    dataGridViewMain.DataSource=view; 
    dataGridViewMain.DataBind(); 
    

    それ以外の場合は、あなたがこれを行うために必要がある場合があります:私はあなたが関数データはデータセットを取得し、その後のRowFilterを適用する呼び出すことをお勧め

    var view=(dataGridViewMain.DataSource as DataSet).Tables[0].DefaultView 
    view.RowFilter = "CustomerName = 'My Customer'"; 
    dataGridViewMain.DataSource=view; 
    dataGridViewMain.DataBind(); 
    
    +0

    返信いただきありがとうございます。 DataSourceを再バインドせずにこれを行う方法はありませんか?フィルタをグリッドの上に置き、そこにユーザがフィルタテキストを入力するようにします。しかし、ユーザーがフィルタを削除すると、データベースに戻ることなく元のデータソースセットが必要になります。ありがとう – user1131661

    +0

    元のデータソースを設定するには、RowStateFilter = DataViewRowState.OriginalRows –

    0

    はDataViewRowState.ModifiedCurrent.Alsoにrowstateフィルタを設定してみてくださいデータテーブルの変更を受け入れ、データグリッドを再バインドします。

    (dataGridViewMain.DataSource as DataSet).Tables[0].AcceptChanges(); 
    dataGridViewMain.DataBind(); 
    
    +0

    返信をありがとう。だから私は次のコードを試してみました: (DataSetとしてdataGridViewMain.DataSource)。テーブル[0] .DefaultView.RowFilter = "Asset_No = 'ベースクラス5'"; (DataSetとしてdataGridViewMain.DataSource)。テーブル[0] .DefaultView.RowStateFilter = DataViewRowState.ModifiedCurrent; (DataSetとしてdataGridViewMain.DataSource)。テーブル[0] .AcceptChanges(); しかし、DataBindメソッドはありません。完全な例があれば?ありがとう – user1131661

    +0

    dataGridViewMain.DataBind()はありません?? –

    +0

    それはありません。私はDataBindingsを持っていますが、DataBindはありません – user1131661

    1

    コントロールをバインドするときに、DefaultViewまたはDataTableにバインドしていますか? DataTableにバインドすると、DefaultViewに対してRowFilterが表示されることはありません。

    関連する問題