2010-08-10 6 views
5

다음 코드는 작동하지 않는 것 같습니다. Page_Load 함수에서 DataSet을 채우고 결과를 격자보기로 표시합니다.Gridview에 표시 할 DataTable의 RowFilter

DataTable newsTable = new DataTable(); 
newsTable = newsDataSet.Tables[0]; 

DataView dvData = new DataView(newsTable); 
dvData.RowFilter = "Year > '" + yearID + "'"; 

GridViewMain.DataSource = dvData; 
GridViewMain.DataBind(); 

그러나 gridview에 그것을 orignally로드 된 데이터를 도시되지 필터링 된 데이터 :

newsCommand = new SqlCommand("SQL code here", dbConnection); 
newsDataSet = new DataSet(); 
newsDataAdapter = new SqlDataAdapter(newsCommand); 
newsDataAdapter.SelectCommand = newsCommand; 
newsDataAdapter.Fill(newsDataSet, "Bulletins"); 

if (!Page.IsPostBack) 
{ 
    GridViewMain.DataSource = newsDataSet; 
    GridViewMain.DataBind(); 
} 

I 일부 데이터를 필터링하기 위해이 함수를 호출 링크 (yearID 매개 변수로 전달 된)을 가질 . 내가 생각할 수있는 유일한 점은 Page_Load 함수에서 DataTable을 사용하지 않는다는 것입니다. 내가 뭘 놓치고 있니? 그것은의 RowFilter 문에 뭔가 틀림

DataView dataView = newsDataSet.Tables[0].DefaultView; 
dataView.RowFilter = "NewsDate2 Like '%" + yearID + "'"; 

GridViewMain.DataSource = dataView; 
GridViewMain.DataBind(); 

:

+1

'DataTable newsTable = newsDataSet.Tables [0]', ** please **. – SLaks

+0

'yearID'는 무엇입니까? – SLaks

+0

yearID는 데이터를 필터링하기 위해 연도 값으로 시작하는 매개 변수이지만 전체 날짜로 수정했습니다. 방금 ​​함수의 코드를 다음으로 변경했습니다. newsDataSet.Tables [0] .DefaultView.RowFilter = "NewsDate2 ''01/01/2010'" "; GridViewMain.DataSource = newsDataSet.Tables [0] .DefaultView; GridViewMain.DataBind(); 여전히 동일한 작업을 수행하지만 데이터 필터링은 수행하지 않습니다. –

답변

7

아드리안

덕분에 함수의 코드를 변경.