c#
  • .net-4.0
  • ado.net
  • datagridview
  • rowfilter
  • 2012-04-13 2 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=(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 필터를 설정해보십시오 :

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

    그렇지 않으면이 작업을 수행해야 할 수도 있습니다 : 나는 기능 데이터가 데이터 집합을 얻을 다음의 RowFilter를 적용 호출을 제안 데이터 테이블에 대한 변경 사항을 승인하고 DataGrid를 리 바인드하십시오.

    (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() not there ?? –

    +0

    아니야, 거기 있지 않아. 내가 DataBindings 있지만 DataBind가 – user1131661

    1

    컨트롤을 바인딩 할 때 DefaultView 또는 DataTable에 바인딩합니까? DataTable에 바인딩하면 DefaultView에 대한 RowFilter가 표시되지 않습니다.

    관련 문제