2011-01-17 2 views
0

필터링을 허용하려는 RadGrid를 사용하고 있습니다. 각 개별 열에서 필터링을 허용하지만 모든 필터를 적용하도록 프로그램 할 단추를 추가했습니다.RadGrid가 필터 값을 상실합니다

그러나 필터를 적용하면 필터 상자에서 필터 값이 손실 된 다음 다시 자체적으로 리 바인드되고 RadGrid가 재설정됩니다. 이 모든 것은 명령 항목 템플리트에서 작성한 적용 필터를 누르면 발생합니다.

여기 일부 코드가 있습니다.

protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e) 
{ 


if (e.CommandName == "FilterRadGrid" || e.CommandName == "Filter") 
    { 
     string expression = ""; 
     GridFilteringItem item = RadGrid1.MasterTableView.GetItems(GridItemType.FilteringItem)[0] as GridFilteringItem; 
     string col1 = (item["col1 "].Controls[0] as TextBox).Text; 
     string col2 = (item["col2"].Controls[0] as TextBox).Text; 
     string col3= (item["col3"].Controls[0] as TextBox).Text; 

      if (col1!= "") 
       expression += "([col1] LIKE \'%" + col1+ "%\')"; 
      if (col2!= "") 
      { 
       if (expression != "") 
        expression += " AND "; 
       expression += "([col2] LIKE \'%" + col2+ "%\')"; 
      } 
      if (col3!= "") 
      { 
       if (expression != "") 
        expression += " AND "; 
       expression += "([col3] LIKE \'%" + col3+ "%\')"; 
      } 


     RadGrid1.MasterTableView.FilterExpression = expression; 
     RadGrid1.MasterTableView.Rebind(); 
    } 
} 

그것은 필터 상자가 지워집니다 필터 이후를 제외하고 어떻게해야 모든 일들을 수행하고 그리드는 어떤 이상한 이유로 다시 결합하지 않으며 그리드가 더 이상 필터링됩니다. 필터 상자 (col1, col2, col3)의 값을 어떻게 유지할 수 있습니까 ??

사전에 도움을 주셔서 감사합니다.

답변

2

각 열의 FilterValue을 별도로 설정해야합니다. 컨트롤을 참조하지 않고 GridColumn의 속성을 사용합니다. 당신은 사용하여 열을 검색 할 수 있습니다

GridBoundColumn clmn = myGrid.Columns.FindByUniqueName("theUniqueNameOfTheColumn"); 

나중에 당신이 컬럼의 설정 필터 값이 수

clmn.CurrentFilterValue = "myFilterValue"; 

이 잘 작동합니다 당신이 FilterTemplate을 사용하지 않는 경우. FilterTemplate을 사용하는 경우 몇 가지 추가 단계가 있습니다.

+0

필터 템플릿을 사용하여 어떻게 처리 할 수 ​​있습니까? 나는 현재 그 문제가 있습니다. – Derek

+0

@Derek 저는이 일을 할 때 제가 일했던 회사를 떠났으 며, 소스 코드를 가지고 있지 않습니다 ... 죄송합니다. Telerik과 함께 개발을한지 얼마되지 않아서 나는 당신을 도울 수 없을 것 같습니다. – thomasvdb