This is a migrated thread and some comments may be shown as answers.

MultiSelect filter using radgrid filter templates

1 Answer 128 Views
Grid
This is a migrated thread and some comments may be shown as answers.
abinav
Top achievements
Rank 1
abinav asked on 09 Mar 2011, 07:08 PM

Requirements

RadControls version

 

                                RadControls  for  ASP.NET  AJAX  all versions

 

.NET version                                              2.0 and Later

 

Visual Studio version                                                        2005 and later

 

programming language                                                    c#

 

browser support

all browsers supported by RadControls


 


PROJECT DESCRIPTION

This is a simple code which deals with using filtertemplate in the radgrid with grid being binded from the code behind using the Needdatasource event and the comboboxes being loaded using the sqldatasource
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
        </telerik:RadScriptManager>
        <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="False" 
            GridLines="None" onneeddatasource="RadGrid1_NeedDataSource" 
            AllowFilteringByColumn="True" AllowPaging="True" AllowSorting="True">
<MasterTableView>
<RowIndicatorColumn>
<HeaderStyle Width="20px"></HeaderStyle>
</RowIndicatorColumn>
  
<ExpandCollapseColumn>
<HeaderStyle Width="20px"></HeaderStyle>
</ExpandCollapseColumn>
    <Columns>
        <telerik:GridBoundColumn DataField="CountryID" HeaderText="MCountryID" 
            UniqueName="column">
        </telerik:GridBoundColumn>
        <telerik:GridBoundColumn DataField="CountryName" FilterListOptions ="VaryByDataType" HeaderText="CountryName" 
            UniqueName="CountryName" CurrentFilterFunction="EqualTo">
            <FilterTemplate>
                <telerik:RadComboBox ID="RadComboBox1" AppendDataBoundItems="true" SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("CountryName").CurrentFilterValue %>'
DataSourceID="SqlDataSource1" 
                    DataTextField="CountryName" DataValueField="CountryName" runat="server" 
                    AutoPostBack="True"  Filter="Contains" MarkFirstMatch="True" OnClientSelectedIndexChanged="CountryIndexChanged">
                    <Items>
                           <telerik:RadComboBoxItem Text="All" />
                    </Items>
  
                </telerik:RadComboBox>
                  <telerik:RadScriptBlock ID="RadScriptBlock3" runat="server">
  
                                <script type="text/javascript">
                                    function CountryIndexChanged(sender, args) {
                                        var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
                                        tableView.filter("CountryName", args.get_item().get_value(), "EqualTo");
                                    }
                                </script>
  
                            </telerik:RadScriptBlock>
  
            </FilterTemplate>
        </telerik:GridBoundColumn>
        <telerik:GridBoundColumn DataField="CodeX2" HeaderText="CodeX2" 
            UniqueName="CodeX2"  CurrentFilterFunction="EqualTo" ShowFilterIcon="false">
        <FilterTemplate>
            <telerik:RadComboBox ID="RadComboBox2" DataSourceID="SqlDataSource1" SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("CodeX2").CurrentFilterValue %>'  AppendDataBoundItems="true" DataTextField="CodeX2" OnClientSelectedIndexChanged="CodeX2IndexChanged" DataValueField="CodeX2" runat="server">
            </telerik:RadComboBox>
        <telerik:RadScriptBlock ID="RadScriptBlock5" runat="server">
  
                                <script type="text/javascript">
                                    function CodeX2IndexChanged(sender, args) {
                                        var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
                                        tableView.filter("CodeX2", args.get_item().get_value(), "EqualTo");
                                    }
                                </script>
  
                            </telerik:RadScriptBlock>
        </FilterTemplate>
        </telerik:GridBoundColumn>
        <telerik:GridBoundColumn DataField="CountryCode" HeaderText="CountryCode" 
            UniqueName="CountryCode">
        <FilterTemplate>
        <telerik:RadComboBox ID="RadComboBox3" DataSourceID="SqlDataSource1" DataTextField="CountryCode" AppendDataBoundItems="true" SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("CountryCode").CurrentFilterValue %>' OnClientSelectedIndexChanged="CountryCodeIndexChanged" DataValueField="CountryCode" runat="server">
            </telerik:RadComboBox>
        <telerik:RadScriptBlock ID="RadScriptBlock4" runat="server">
  
                                <script type="text/javascript">
                                    function CountryCodeIndexChanged(sender, args) {
                                        var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
                                        tableView.filter("CountryCode", args.get_item().get_value(), "EqualTo");
                                    }
                                </script>
  
                            </telerik:RadScriptBlock>
        </FilterTemplate>
           
        </telerik:GridBoundColumn>
    </Columns>
</MasterTableView>
        </telerik:RadGrid>
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:sql1_DB %>" 
              
            SelectCommand="SELECT [CountryName], [MCountryID], [CodeX2], [CountryCode], [DINCode] FROM [Countries]"></asp:SqlDataSource>
    </div>
and the code behind will look like this
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Telerik.Web.UI;
  
public partial class filtertemplate : System.Web.UI.Page
{
    public static DataTable GetDataTable(string query)
    {
        string ConnString = ConfigurationManager.ConnectionStrings["sql1_DB"].ConnectionString;
        SqlConnection conn = new SqlConnection(ConnString);
        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = new SqlCommand(query, conn);
  
        DataTable myDataTable = new DataTable();
  
        conn.Open();
        try
        {
            adapter.Fill(myDataTable);
        }
        finally
        {
            conn.Close();
        }
        return myDataTable;
    }
    protected void Page_Load(object sender, EventArgs e)
    {
  
    }
    protected void RadGrid1_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
          
        RadGrid1.DataSource = GetDataTable("select  MCountryID,CountryName,CountryCode,DINCode from Countries");
    }
    protected void RadComboBox1_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        string filterExpression;
        filterExpression = "[CountryName] = '" + e.Value + "'";
        RadGrid1.MasterTableView.FilterExpression = filterExpression;
        RadGrid1.MasterTableView.Rebind();
    }
}

1 Answer, 1 is accepted

Sort by
0
Sebastian
Telerik team
answered on 10 Mar 2011, 01:10 PM
Hi abinav,

Thank you for the submission, however it is very close to what is demonstrated on this online demo of RadGrid for ASP.NET AJAX:
http://demos.telerik.com/aspnet-ajax/grid/examples/programming/filtertemplate/defaultcs.aspx

Nevertheless, I converteed your code library post to a forum thread to make it available for other community members.

Best,
Sebastian
the Telerik team
Registration for Q1 2011 What’s New Webinar Week is now open. Mark your calendar for the week starting March 21st and book your seat for a walk through all the exciting stuff we ship with the new release!
Tags
Grid
Asked by
abinav
Top achievements
Rank 1
Answers by
Sebastian
Telerik team
Share this question
or