Quantcast
Channel: Telerik Forums RSS
Viewing all articles
Browse latest Browse all 94857

RadGrid Custom Filter OnTextChanged event got triggered twice

$
0
0

Hi There,

I am using a custom filter in my RadGrid, but when debugging I noticed that the OnTextChanged event got triggered twice. However, if I remove the AjaxSetting section, everything works fine. But I do need to config ajax settings in my application. Is there anyone to explain why this is happening? The following is the demo code. Thanks a lot. 

TestCustomFilter.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" EnableViewStateMac="false" ViewStateEncryptionMode="Never" CodeFile="TestCustomFilter.aspx.cs" Inherits="TestCustomFilter" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<headid="Head1"runat="server">
    <title>Telerik ASP.NET Example</title>
    <linkrel="Stylesheet"href="../Styles/styles.css"/>
</head>
<body>
    <formid="form1"runat="server">
    <telerik:RadScriptManagerrunat="server"ID="RadScriptManager1"/>
    <telerik:RadSkinManagerID="RadSkinManager1"runat="server"ShowChooser="true"/>
    <divclass="demo-container size-medium">
        <telerik:RadAjaxManagerID="RadAjaxManager1"runat="server">
            <AjaxSettings>
                <telerik:AjaxSettingAjaxControlID="RadGrid1">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControlControlID="RadGrid1"LoadingPanelID="RadAjaxLoadingPanel1"></telerik:AjaxUpdatedControl>
                    </UpdatedControls>
                </telerik:AjaxSetting>
            </AjaxSettings>
        </telerik:RadAjaxManager>
        <telerik:RadAjaxLoadingPanelID="RadAjaxLoadingPanel1"runat="server">
        </telerik:RadAjaxLoadingPanel>
        <telerik:RadGridID="RadGrid1"runat="server"OnNeedDataSource="RadGrid1_NeedDataSource"
            GridLines="None"AllowPaging="true"
            AllowSorting="true"PageSize="10"AllowFilteringByColumn="true">
            <MasterTableViewAutoGenerateColumns="False"CommandItemDisplay="None"CurrentResetPageIndexAction="SetPageIndexToFirst"
                DataKeyNames="OrderID"Dir="LTR"Frame="Border"
                TableLayout="Auto">
                <Columns>
                    <telerik:GridBoundColumnCurrentFilterFunction="NoFilter"DataField="OrderID"Display="false"
                        DataType="System.Int32"FilterListOptions="VaryByDataType"ForceExtractValue="None"
                        HeaderText="OrderID"ReadOnly="True"SortExpression="OrderID"UniqueName="OrderID">
                    </telerik:GridBoundColumn>
                    <telerik:GridTemplateColumnUniqueName="ShipName"HeaderText="Ship Name"SortExpression="ShipName">
                        <FilterTemplate>
                            <asp:TextBoxID="TextBox1"runat="server"AutoPostBack="True"  OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
                        </FilterTemplate>
                        <ItemTemplate>
                            <asp:HyperLinkID="targetControl"runat="server"NavigateUrl="#"Text='<%# Eval("ShipName") %>'></asp:HyperLink>
                        </ItemTemplate>
                    </telerik:GridTemplateColumn>
                    <telerik:GridBoundColumnAllowSorting="true"DataField="ShipCountry"HeaderText="Ship Country"
                        SortExpression="ShipCountry"UniqueName="ShipCountry">
                    </telerik:GridBoundColumn>
                </Columns>
                <PagerStylePageSizeControlType="RadDropDownList"ShowPagerText="false"/>
            </MasterTableView>
        </telerik:RadGrid>
    </div>
    </form>
</body>
</html>

 

 

TestCustomFilter.aspx.cs

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using Telerik.Web.UI;
using System.IO;
 
public partial class TestCustomFilter : System.Web.UI.Page
{
    public class MyOrder
    {
        public int OrderID { get; set; }
        public DateTime OrderDate { get; set; }
        public double Freight { get; set; }
        public string ShipName { get; set; }
        public string ShipCountry { get; set; }
    }
 
    protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    {
        LoadData();
    }
 
    protected void RadGrid1_PreRender(object sender, EventArgs e)
    {
        LoadData();
    }
 
    private void LoadData()
    {
        MyOrder _order1 = new MyOrder();
        _order1.OrderID = 1;
        _order1.OrderDate = new DateTime(2014, 1, 18);
        _order1.Freight = 15.61;
        _order1.ShipCountry = "Canada";
        _order1.ShipName = "David";
 
        MyOrder _order2 = new MyOrder();
        _order2.OrderID = 2;
        _order2.OrderDate = new DateTime(2015, 9, 12);
        _order2.Freight = 12.39;
        _order2.ShipCountry = "US";
        _order2.ShipName = "Jack";
 
        MyOrder _order3 = new MyOrder();
        _order3.OrderID = 3;
        _order3.OrderDate = new DateTime(2015, 6, 2);
        _order3.Freight = 6.81;
        _order3.ShipCountry = "Mexico";
        _order3.ShipName = "Howard";
 
        MyOrder _order4 = new MyOrder();
        _order4.OrderID = 4;
        _order4.OrderDate = new DateTime(2014, 3, 26);
        _order4.Freight = 19.92;
        _order4.ShipCountry = "Canada";
        _order4.ShipName = "William";
 
        MyOrder _order5 = new MyOrder();
        _order5.OrderID = 5;
        _order5.OrderDate = new DateTime(2015, 5, 15);
        _order5.Freight = 9.96;
        _order5.ShipCountry = "US";
        _order5.ShipName = "Don";
 
        List<MyOrder> _myList = new List<MyOrder>();
        _myList.Add(_order1);
        _myList.Add(_order2);
        _myList.Add(_order3);
        _myList.Add(_order4);
        _myList.Add(_order5);
 
        RadGrid1.DataSource = _myList;
    }
 
    protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
        TextBox TextBox1 = sender as TextBox;
        GridColumn column = RadGrid1.MasterTableView.GetColumnSafe("ShipName");
        column.CurrentFilterFunction = GridKnownFunction.Contains;
        column.CurrentFilterValue = TextBox1.Text.Trim();
        RadGrid1.Rebind();
    }
}

Viewing all articles
Browse latest Browse all 94857

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>