Hi all,
I am applying Combobox filter for Radgrid like
http://demos.telerik.com/aspnet-ajax/grid/examples/programming/filtertemplate/defaultcs.aspx
But I would like to do more than that.
Let's say, Course column has
+ CS123
+ CS124
+ CS890
+ BM123
+ BM124
If user chooses CS123 from Combobox, of course, it will filter data has CS123 only.
Beside that, I would like add another function which allows user inputs data for filtering.
For example, user input "123" and press Enter
It will filter data includes "123", the result should be "CS123", and "BM123"
That means user can have 2 options:
+ Choose course from dropdown list
+ Or input data and press Enter (work like "Contains" function)
Thanks,
Andy.
I am applying Combobox filter for Radgrid like
http://demos.telerik.com/aspnet-ajax/grid/examples/programming/filtertemplate/defaultcs.aspx
But I would like to do more than that.
Let's say, Course column has
+ CS123
+ CS124
+ CS890
+ BM123
+ BM124
If user chooses CS123 from Combobox, of course, it will filter data has CS123 only.
Beside that, I would like add another function which allows user inputs data for filtering.
For example, user input "123" and press Enter
It will filter data includes "123", the result should be "CS123", and "BM123"
That means user can have 2 options:
+ Choose course from dropdown list
+ Or input data and press Enter (work like "Contains" function)
Thanks,
Andy.
1 Answer, 1 is accepted
0
Elliott
Top achievements
Rank 2
answered on 02 Aug 2011, 06:05 PM
three combo boxes, all of which AND together
<tr> <td style="width: 74px; height: 23px;"> <asp:LinkButton ID="lnkAll" OnClick="lnkAll_Click" Font-Bold="False" Font-Names="Arial" Font-Size="8pt" Font-Underline="True" ForeColor="#0000C0" Text="All Records" Width="67px" runat="server" /> </td> <td style="width: 141px; height: 23px;"><span style="font-size: 8pt; color: #0000c0; font-family: Arial">Ship Date</span> <telerik:RadComboBox ID="cmbShipDate" Width="86px" Font-Names="Arial" Font-Size="8pt" ForeColor="#0000C0" OnSelectedIndexChanged="cmbShipDate_SelectedIndexChanged" AutoPostBack="True" runat="server" /> </td> <td style="width: 189px; height: 23px;"> <span style="font-size: 8pt; color: #0000cc; font-family: Arial">Department</span> <telerik:RadComboBox ID="cmbDepart" Width="123px" Font-Names="Arial" Font-Size="8pt" ForeColor="#0000C0" DataValueField="DepartmentNumber" DataTextField="DepartmentDescription" OnSelectedIndexChanged="cmbDepart_SelectedIndexChanged" AutoPostBack="True" runat="server" /> </td> <td style="width: 118px; height: 23px;"> <span style="font-size: 8pt; color: #0000cc; font-family: Arial">Store #</span> <telerik:RadComboBox ID="cmbStores" Width="76px" Font-Names="Arial" Font-Size="8pt" ForeColor="#0000C0" OnSelectedIndexChanged="cmbStores_SelectedIndexChanged" AutoPostBack="True" runat="server" /> </td> </tr>..... <telerik:RadGrid ID="rgEditOrder" OnNeedDataSource="rgEditOrder_NeedDataSource" OnItemCommand="rgEditOrder_ItemCommand" OnItemCreated="rgEditOrder_ItemCreated" ShowFooter="True" runat="server" Skin="Sunset"> <GroupingSettings CaseSensitive="false" /> <MasterTableView DataKeyNames="OrderSeq" AutoGenerateColumns="false" AllowSorting="true" AllowPaging="true" AllowFilteringByColumn="False" EditMode="InPlace" > <Columns> <telerik:GridBoundColumn UniqueName="StoreNumber" DataField="StoreNumber" HeaderText="Store #" DataFormatString="{0:#####}" DataType="System.Int32" Aggregate="None" ReadOnly="True"> <HeaderStyle Width="40px" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="BoothNumber" DataField="BoothNumber" HeaderText="Booth #" DataFormatString="{0:#####}" DataType="System.Int32" Aggregate="None" ReadOnly="True"> <HeaderStyle Width="40px" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="ItemID" DataField="ItemID" HeaderText="Item" DataType="System.Double" Aggregate="None" ReadOnly="True"> <HeaderStyle Width="40px" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="ItemDescription" DataField="ItemDescription" HeaderText="Description" ReadOnly="True"> <HeaderStyle Width="100px" /> </telerik:GridBoundColumn> <telerik:GridDateTimeColumn UniqueName="ShipDate" DataField="ShipDate" PickerType="DatePicker" HeaderText="Ship Date" DataFormatString="{0:d}" DataType="System.DateTime" > <HeaderStyle Width="60px" /> </telerik:GridDateTimeColumn> <telerik:GridTemplateColumn UniqueName="Qty" HeaderText="Cases" DataField="Qty" DataType="System.Int32" Aggregate="Sum" > <ItemTemplate> <asp:Label ID="lblQty" Text='<%# Bind("Qty") %>' Width="40px" runat="server" /> </ItemTemplate> <EditItemTemplate> <telerik:RadNumericTextBox ID="rntbQty" Value='<%# Eval("Qty") %>' OnTextChanged="rntbQty_TextChanged" AutoPostBack="True" Width="40px" runat="server"> <NumberFormat DecimalDigits="0" /> </telerik:RadNumericTextBox> </EditItemTemplate> <HeaderStyle Width="40px" /> </telerik:GridTemplateColumn> <telerik:GridBoundColumn UniqueName="NetCost" DataField="NetCost" HeaderText="Net Cost" DataFormatString="{0:C2}" DataType="System.Double" Aggregate="None" ReadOnly="True"> <HeaderStyle Width="50px" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="ItemTotal" DataField="ItemTotal" HeaderText="Item Total" DataFormatString="{0:C2}" DataType="System.Double" Aggregate="Sum" ReadOnly="True"> <HeaderStyle Width="50px" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="PageNumber" DataField="PageNumber" HeaderText="Page" DataFormatString="{0:#####}" DataType="System.Int32" Aggregate="None" ReadOnly="True"> <HeaderStyle Width="40px" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="VendorNumber" DataField="VendorNumber" HeaderText="Vendor" DataFormatString="{0:#####}" DataType="System.Int32" Aggregate="None" ReadOnly="True"> <HeaderStyle Width="40px" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="DepartmentNumber" DataField="DepartmentNumber" HeaderText="Depart" DataFormatString="{0:##}" DataType="System.Int32" Aggregate="None" ReadOnly="True"> <HeaderStyle Width="30px" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="OrderSeq" DataField="OrderSeq" DataType="System.Int64" Visible="false"> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="MinQty" DataField="MinQty" DataType="System.Int32" Visible="false"> </telerik:GridBoundColumn> </Columns> </MasterTableView> <ClientSettings> <ClientEvents OnRowDblClick="RowDblClick" /> <ClientEvents OnRowClick="RowClick" /> </ClientSettings> </telerik:RadGrid> protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) {..... FillComboBoxes(); } private void FillComboBoxes() { RadComboBoxItem rcbItem; int i; DateTime ShipDate; DataSet dsOrder = new DataSet(); WsOrderSystem wsOrder = new WsOrderSystem(); dsOrder = wsOrder.GetOnlineOrder(Convert.ToDouble(txtStoreHidden.Value), txtChain.Value); //populate stores DataView dv = new DataView(dsOrder.Tables[0]); dv = dsOrder.Tables[0].DefaultView; dv.Sort = "StoreNumber"; // create data table of unique store numbers // in the data view taken from the dataset of order items DataTable dtStores = dv.ToTable(true, "StoreNumber"); rcbItem = new RadComboBoxItem("All"); cmbStores.Items.Add(rcbItem); for (i = 0; i < dtStores.Rows.Count; i++) { rcbItem = new RadComboBoxItem(dtStores.Rows[i][0].ToString()); cmbStores.Items.Add(rcbItem); } //populate department // create table of unique department numbers and department descriptions // in the data view taken from the dataset of order items dtStores = dv.ToTable(true, "DepartmentNumber", "DepartmentDescription"); cmbDepart.DataSource = dtStores; cmbDepart.DataValueField = dtStores.Columns[0].ColumnName; cmbDepart.DataTextField = dtStores.Columns[1].ColumnName; cmbDepart.DataBind(); rcbItem = new RadComboBoxItem("All"); cmbDepart.Items.Add(rcbItem); cmbDepart.SelectedIndex = cmbDepart.Items.Count - 1; //populate ship dates dv.Sort = "ShipDate"; // create data table of unique ship dates in the view // taken from the dataset of order items dtStores = dv.ToTable(true, ("ShipDate")); rcbItem = new RadComboBoxItem("All"); cmbShipDate.Items.Add(rcbItem); for (i = 0; i < dtStores.Rows.Count; i++) { ShipDate = Convert.ToDateTime(dtStores.Rows[i][0]); rcbItem = new RadComboBoxItem(ShipDate.ToShortDateString()); //cmbShipDate.Items.Add(Convert.ToDateTime(dtStores.Rows[i][0].ToString()).ToShortDateString()); cmbShipDate.Items.Add(rcbItem); } }.... protected void lnkAll_Click(object sender, EventArgs e) { cmbShipDate.SelectedIndex = 0; cmbDepart.SelectedIndex = cmbDepart.Items.Count - 1; cmbStores.SelectedIndex = 0; rgEditOrder.MasterTableView.FilterExpression = string.Empty; rgEditOrder.Rebind(); } protected void cmbShipDate_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e) { string filterExpression; filterExpression = RemoveFilter("ShipDate"); rgEditOrder.MasterTableView.FilterExpression = filterExpression; if (cmbShipDate.SelectedItem.Text == "All") filterExpression = string.Empty; else filterExpression = "([ShipDate] = '" + cmbShipDate.SelectedItem.Text + "')"; rgEditOrder.MasterTableView.FilterExpression = AppendFilterExpression(filterExpression); rgEditOrder.EditIndexes.Clear(); ClearOutItemData(); rgEditOrder.MasterTableView.Rebind(); } protected void cmbDepart_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e) { string filterExpression; filterExpression = RemoveFilter("DepartmentNumber"); rgEditOrder.MasterTableView.FilterExpression = filterExpression; if (cmbDepart.SelectedItem.Text == "All") filterExpression = string.Empty; else filterExpression = "([DepartmentNumber] = '" + cmbDepart.SelectedValue.ToString() + "')"; rgEditOrder.MasterTableView.FilterExpression = AppendFilterExpression(filterExpression); rgEditOrder.EditIndexes.Clear(); ClearOutItemData(); rgEditOrder.MasterTableView.Rebind(); } protected void cmbStores_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e) { string filterExpression; filterExpression = RemoveFilter("StoreNumber"); rgEditOrder.MasterTableView.FilterExpression = filterExpression; if (cmbStores.SelectedItem.Text == "All") filterExpression = string.Empty; else filterExpression = "([StoreNumber] = '" + cmbStores.SelectedItem.Text + "')"; rgEditOrder.MasterTableView.FilterExpression = AppendFilterExpression(filterExpression); rgEditOrder.EditIndexes.Clear(); ClearOutItemData(); rgEditOrder.MasterTableView.Rebind(); } private string AppendFilterExpression(string filterExpression) { StringBuilder sb; sb = new StringBuilder(rgEditOrder.MasterTableView.FilterExpression); if (filterExpression == string.Empty) return sb.ToString(); if (sb.ToString() != string.Empty) { sb.Append(" AND "); } sb.Append(filterExpression); return sb.ToString(); } private string RemoveFilter(string columnName) { string filterExpression; string[] filterArray; string charac = "&"; char[] amper = charac.ToCharArray(); StringBuilder sb; int i; sb = new StringBuilder(""); filterExpression = rgEditOrder.MasterTableView.FilterExpression; filterExpression = filterExpression.Replace(" AND ", charac); filterArray = filterExpression.Split(amper, 3); for (i=0; i < filterArray.Length;i++) { if (filterArray[i].IndexOf(columnName) == -1) { if (sb.Length > 0) { sb.Append(charac); } sb.Append(filterArray[i]); } } filterExpression = sb.ToString(); filterExpression = filterExpression.Replace(charac," AND "); return filterExpression; }