2016-06-28 1 views
0

나는 C#을 새로운 오전, 나는 필터를 콤보 상자의 값을 기준으로 DataGridView를 사용하려고 시도하고있다. 처음에는 데이터베이스에서 원하는 모든 값으로 datagridview를로드했습니다. 이제 사용자가 콤보 상자에서 아무 것도 선택하지 않을 때마다 DataGridView의 값도 변경되어야합니다. 또 다시 데이터베이스를 요청하지 수있는 방법이있다, 나를 위해 작동 한 솔루션은 각 콤보 상자 값 변경에 데이터베이스를 요청하는 것입니다 그것은 코드가C#의 DataGridView를 검색/필터

DataRowView view = (DataRowView)comboBox2.SelectedItem; 
int year = (int) view.Row["Year"]; 
DataTable dt = new DataTable(); 
if (this.OpenConnection() == true) 
{ 
    String query = "Select * from yearly where year = "+year; 
    MySqlCommand cmd = new MySqlCommand(query, connection); 

    using (MySqlDataAdapter da = new MySqlDataAdapter(cmd)) 
    { 
     da.Fill(dt); 
    } 
} 

에 대한 부착 ... 작동하지만? 콤보 상자 값을 기반으로 DataGridview를 필터링 할 수 있습니다. 모든 자습서 또는 링크가 작동합니다. 콤보 상자의 SelectionChangeCommitted 이벤트에서

+0

[이보기] (http://stackoverflow.com/questions/3449954/rowfilter-on-a-datatable-to-display-in-a-gridview). 또한 항상 연결 상태를 유지하고 있습니까? 그건 좋지 않다. 내 연결 개방 :)를 유지하고 있지 않다 전혀 – Crowcoder

+0

덕분에, 나는 모든 실행 – Nixi

답변

1

:

private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e) 
{ 
    (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("Year= '{0}'", comboBox1.SelectedItem.ToString()); 
} 

는 도움이되기를 바랍니다.

+0

나는 그것을 시도 후 닫습니다,하지만 excecption 다음과 같은 수 있습니다. "개체 참조가 개체의 인스턴스로 설정되지 않았습니다". – Nixi

+0

@Nixi null이란 무엇입니까? 확인 해봤 었니? – Berkay

+0

@Nixi, 정확히 붙여 넣을 수 없으며 컨트롤 이름이 다릅니다. 대답을 템플릿으로 사용하십시오. 나는이 문서에서 읽을 Combobox.selectedindexchanged ... 문제는이 이벤트가 로딩 호출 : 그 시간에 도착하기 때문에 – Crowcoder

0

해결 방법 1 : 데이터가 자주 변경되고 최신 데이터를 원한다면 동일한 코드를 사용할 수 있습니다.

해결 방법 2 : - DataTable을로 스토어 - 는 데이터 소스에서 데이터를 가져 오기 요구 사항 및 데이터 세트로 설정 DataGridView를 소스에 따라 데이터를 필터링합니다.

또한 참조 할 수 있습니다 this