Zobaczmy na przykład:
Aby zmienić filtr kategorii ze zwykłego TextBoxa na np. ComboBox możemy posłużyć się poniższym kodem:
Code:
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> </telerik:RadScriptManager> <telerik:RadGrid ID="rgProducts" runat="server" DataSourceID="lqProducts" AllowPaging="True" PageSize="10" AutoGenerateColumns="False" AllowFilteringByColumn="True" EnableLinqExpressions="True" onitemcommand="rgProducts_ItemCommand" onitemdatabound="rgProducts_ItemDataBound" > <MasterTableView> <Columns> <telerik:GridBoundColumn UniqueName="ProductName" SortExpression="ProductName" HeaderText="Nazwa" DataField="ProductName" DataType="System.String" /> <telerik:GridBoundColumn UniqueName="ProductModel" SortExpression="ProductModel" HeaderText="Model" DataField="ProductModel" /> <telerik:GridBoundColumn UniqueName="ProductCategoryName" SortExpression="ProductCategoryName" HeaderText="Kategoria" DataField="ProductCategoryName"> <%-- <FilterTemplate> <telerik:RadComboBox runat="server" ID="rcbCategoryName"></telerik:RadComboBox> </FilterTemplate> --%> </telerik:GridBoundColumn> </Columns> </MasterTableView> </telerik:RadGrid> <asp:LinqDataSource runat="server" ID="lqProducts" onselecting="lqProducts_Selecting"></asp:LinqDataSource>
W code behind umieszczamy następujący kod:
Code:
protected void lqProducts_Selecting(object sender, LinqDataSourceSelectEventArgs e) { var adventureWorksLt2012Entities = new AdventureWorksLT2012Entities(); e.Result = adventureWorksLt2012Entities.Products.Select(x => new { x.ProductID, ProductName = x.Name, ProductModel = x.ProductModel.Name, ProductCategoryName = x.ProductCategory.Name }).OrderBy(x => x.ProductID); } protected void rgProducts_ItemCommand(object sender, GridCommandEventArgs e) { } protected void rgProducts_ItemDataBound(object sender, GridItemEventArgs e) { if (e.Item is GridFilteringItem) { var filterItem = (GridFilteringItem)e.Item; var categoriesComboBox = (RadComboBox)filterItem.FindControl("rcbCategoryName");// accessing RadComboBox in FilterTemplate var adventureWorksLt2012Entities = new AdventureWorksLT2012Entities(); foreach (var consultant in adventureWorksLt2012Entities.Products.GroupBy(x => x.ProductCategory).Select(x => new { x.Key.Name, x.Key.ProductCategoryID })) { categoriesComboBox.Items.Add(new RadComboBoxItem(consultant.Name, consultant.ProductCategoryID.ToString())); } } }
Brak komentarzy:
Prześlij komentarz