2014-10-10 2 views
0

내 문제는 내 Radgrid 내에서 콤보 상자를 클릭하려고하면 아무 것도하지 않는다는 것입니다. 그리드의 사전 렌더링에ComboBox로 RadGrid 필터링

<telerik:RadGrid ID="RadGrid" runat="server" DataSourceID="TestReleaseInformationSource" ShowStatusBar="true" 
      OnItemCommand="RadGridItemCommand" OnPreRender="RadGrid_PreRender" AllowAutomaticUpdates="true" EnableLinqExpressions="false" 
      AllowAutomaticDeletes="true" AllowPaging="true" AutoGenerateColumns="false" AllowFilteringByColumn="true"> 
      <MasterTableView DataKeyNames="PrimaryKey"> 
       <Columns> 
        <telerik:GridBoundColumn AllowFiltering="true" UniqueName="TeacherLastName" DataField="TeacherLastName" HeaderText="Last Name"> 
         <FilterTemplate> 
          <telerik:RadComboBox ID="radComboBoxLastName" DataSourceID="TeacherLastNameDDL" DataTextField="TeacherLastName" DataValueField="TeacherLastName" 
           AppendDataBoundItems="true" SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("TeacherLastName").CurrentFilterValue %>' 
           runat="server" OnClientSelectedIndexChanged="TeacherLastNameChanged"> 
           <Items> 
            <telerik:RadComboBoxItem Text="All" Selected="true" /> 
           </Items> 
          </telerik:RadComboBox> 
          <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server"> 
           <script type="text/javascript"> 
            function TeacherLastNameChanged(sender, args) 
            { 
             var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>"); 
             tableView.filter("TeacherLastName", args.get_item().get_value(), "EqualTo"); 
            } 
           </script> 
          </telerik:RadScriptBlock> 
         </FilterTemplate> 
        </telerik:GridBoundColumn> 

protected void RadGrid_PreRender(object sender, EventArgs e) 
    { 
     if (RadGrid.EditItems.Count > 0) 
     { 
      GridNestedViewItem item = (GridNestedViewItem)RadGrid.MasterTableView.GetItems(GridItemType.NestedView)[Convert.ToInt32(RadGrid.EditIndexes[0])]; 
      item.Visible = false; 
     } 

     if (RadGrid.MasterTableView.FilterExpression != string.Empty) 
     { 
      RefreshCombos(); 
     } 
    } 

    protected void RefreshCombos() 
    { 
     TestReleaseInformationSource.SelectCommand = TestReleaseInformationSource.SelectCommand + " WHERE " + RadGrid.MasterTableView.FilterExpression.ToString(); 

     RadGrid.MasterTableView.Rebind(); 
    } 

나는 시간이 응시했는데 문제가 무엇인지 알아낼 수 없습니다. 어떤 생각이라도 감사 할 것입니다. 필요한 경우 더 많은 코드를 게시합니다.

내가 찾은 해결책은 콤보 상자의 RenderMode 속성을 기본으로 설정하는 것입니다. 나는 아직도 다른 해결 방법을 원할 것이다.

답변

0

JS 기능을 고유하게 만들어보십시오. http://www.telerik.com/support/kb/details/using-dynamic-unique-names-for-javascript-functions 나는 모두가 서로 재정의하여 마지막 하나만 활성화되므로 실행 만한다고 생각합니다. 또한 JS 오류를 찾으십시오.

또한 http://www.telerik.com/help/aspnet-ajax/grid-client-side-binding-adding-sort-filter-expressions.html과 같이 클라이언트에서 필터링을 호출 해보십시오. masterTableView 객체는 주 그리드 객체의 get_masterTableView() 메소드를 통해 가장 잘 얻을 수 있습니다.