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

[Solved] RadGrid Filter Menu Issue

3 Answers 150 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Mahesh Babu
Top achievements
Rank 1
Mahesh Babu asked on 27 Jul 2009, 07:14 AM
Hi,

I have a radgrid for which allowcolumnfiltering will be managed by a radio button Yes. if the user clicks on Yes then filtering on column should be enabled. I am facing an issue when custom filtering on column is on by clicking on radio button Yes.

When I give value to a column and click on filter button, the filter options(EqualTo,NotEqualTo....) is display as text on the response. I made EnableAjaxSkinRendering property to true but still the issue persists.

Everything works perfectly when i remove radiobutton updates from RadAjaxManager.

Please find code below.

thanks,
Mahesh


Default.aspx

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

                <asp:ScriptManager ID="scrp" runat="server"></asp:ScriptManager>
    <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server">
    </telerik:RadAjaxLoadingPanel>
   <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel2" runat="server">
        <img id="imgid" src="images/loading.gif" alt="Loading" />
    </telerik:RadAjaxLoadingPanel>
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" >
        <AjaxSettings>
           
             <telerik:AjaxSetting AjaxControlID="radioYes">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="radGrid" LoadingPanelID="RadAjaxLoadingPanel1" />
                </UpdatedControls>
            </telerik:AjaxSetting>
              <telerik:AjaxSetting AjaxControlID="radioNo">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="radGrid" LoadingPanelID="RadAjaxLoadingPanel1" />
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManager>
          
                <span>Column filter</span>
                <asp:RadioButton ID="radioYes" runat="server" GroupName="ColumnFilter" Text="Yes"
                    AutoPostBack="true" OnCheckedChanged="radioYes_CheckedChanged" />
                 <asp:RadioButton ID="radioNo" runat="server" GroupName="ColumnFilter" Text="No" AutoPostBack="true"
                     OnCheckedChanged="radioNo_CheckedChanged" />
    
            <telerik:RadGrid ID="radGrid" runat="server" AutoGenerateColumns="true" AllowPaging="true"
                 PageSize="5" EnableAjaxSkinRendering="true"
                Skin="Office2007">
                <PagerStyle Mode="NextPrevNumericAndAdvanced" AlwaysVisible="true" />
            </telerik:RadGrid>
    </div>
    </form>
</body>
</html>



Default.aspx.cs

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Telerik.Web.UI;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            LoadRadGrid();
        }

    }

    protected void radioNo_CheckedChanged(object sender, EventArgs e)
    {
        this.radGrid.AllowFilteringByColumn = true;

    }

    protected void radioYes_CheckedChanged(object sender, EventArgs e)
    {
        this.radGrid.AllowFilteringByColumn = false;

    }

    private void LoadRadGrid()
    {
        

        this.radGrid.DataSource = GetDataTable();
        this.radGrid.DataBind();
    }

    private DataTable GetDataTable()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("ID"));
        dt.Columns.Add(new DataColumn("Name"));
        dt.Columns.Add(new DataColumn("Marks"));

        DataRow dr = dt.NewRow();
        dr["ID"] = 1;
        dr["Name"] = "Mahesh";
        dr["Marks"] = 100;
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["ID"] = 2;
        dr["Name"] = "Rajesh";
        dr["Marks"] = 55;
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["ID"] = 3;
        dr["Name"] = "Kishore";
        dr["Marks"] = 89;
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["ID"] = 4;
        dr["Name"] = "Sasi";
        dr["Marks"] = 44;
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["ID"] = 5;
        dr["Name"] = "Kamesh";
        dr["Marks"] = 78;
        dt.Rows.Add(dr);

        return dt;
    }

}







3 Answers, 1 is accepted

Sort by
0
Iana Tsolova
Telerik team
answered on 29 Jul 2009, 01:15 PM
Hi Mahesh,

I suggest that you turn on filtering initially and based in the RadioButton selected expand or collapse the filtering item:

<telerik:RadGrid ID="radGrid" runat="server" AutoGenerateColumns="true"   
    AllowPaging="true" PageSize="5" EnableAjaxSkinRendering="true" Skin="Office2007" 
    AllowFilteringByColumn="true">  
    <PagerStyle Mode="NextPrevNumericAndAdvanced" AlwaysVisible="true" /> 
</telerik:RadGrid> 
 
{  
    GridFilteringItem filteringItem = RadGrid1.MasterTableView.GetItems(GridItemType.FilteringItem)[0] as GridFilteringItem;  
    filteringItem.Expanded = false;  
}  
protected void radioYes_CheckedChanged(object sender, EventArgs e)  
{  
    GridFilteringItem filteringItem = RadGrid1.MasterTableView.GetItems(GridItemType.FilteringItem)[0] as GridFilteringItem;  
    filteringItem.Expanded = true;  

Check it out and let me know if it works for you.

Greetings,
Iana
the Telerik team

Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
0
Mahesh Babu
Top achievements
Rank 1
answered on 30 Jul 2009, 05:05 AM
Hi Lana,

This is working fine if the radGrid AllowFilteringByColumn is true by default. But, my client requirement is that the filtering should be off by default and it should allow only when the user clicks on Yes radio button.

Is there anyway to this???


Thanks,
Mahesh
0
Iana Tsolova
Telerik team
answered on 30 Jul 2009, 11:06 AM
Hello Mahesh,

In this case you could still use the suggested code. But try adding the following one in the ItemCreated event handler:

protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e)  
{  
    if(e.Item is GridFilteringItem && !radioYes.Checked)  
    {  
         e.Item.Expanded = false;  
    }  

Check it out and let me know if it works this way.

Sincerely yours,
Iana
the Telerik team

Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
Tags
Grid
Asked by
Mahesh Babu
Top achievements
Rank 1
Answers by
Iana Tsolova
Telerik team
Mahesh Babu
Top achievements
Rank 1
Share this question
or