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

How to set default filter function on client side ?

1 Answer 214 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Bibhudutta
Top achievements
Rank 1
Bibhudutta asked on 03 Apr 2012, 02:46 AM
I want to set the default filter function for a column on the client side. Please tell me how I can do that.

1 Answer, 1 is accepted

Sort by
0
Shinu
Top achievements
Rank 2
answered on 03 Apr 2012, 08:06 AM
Hi Bibhudutta,

Please take a look into the following code I tried to do filtering on client side on [Enter] key press. The filter function I used  is 'Contains'.

ASPX:
<telerik:RadGrid ID="RadGrid1" runat="server" OnItemCreated="RadGrid1_ItemCreated" AllowFilteringByColumn="true">
 <MasterTableView CommandItemDisplay="Top" DataKeyNames="EmployeeID">
  <Columns>
    <telerik:GridBoundColumn DataField="FirstName" UniqueName="FirstName" HeaderText="FirstName">    
</telerik:GridBoundColumn>
  </Columns>
 </MasterTableView>
</telerik:RadGrid>

C#:
protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e)
{
    if (!Page.IsPostBack)
    {
        if (e.Item is GridFilteringItem)
        {
            GridFilteringItem fltItem = e.Item as GridFilteringItem;
            foreach (GridColumn column in RadGrid1.Columns)
            {
                TextBox box = fltItem[column.UniqueName].Controls[0] as TextBox;
                box.Attributes.Add("onkeypress", "doFilter(this,event)");
            }
        }
    }
}

Javascript:
function doFilter(sender, eventArgs)
{
  if ((eventArgs.keyCode == 13) && (sender.value != ""))
  {
    eventArgs.cancelBubble = true;
    eventArgs.returnValue = false;
    if (eventArgs.stopPropagation)
    {
       eventArgs.stopPropagation();
       eventArgs.preventDefault();
    }
    var masterTableView = $find("<%= RadGrid1.ClientID %>").get_masterTableView();
    var index = sender.parentNode.cellIndex; //index of the current column
    var columns = masterTableView.get_columns();
    uniqueName = columns[index].get_uniqueName();
    masterTableView.filter(uniqueName, sender.value, Telerik.Web.UI.GridFilterFunction.Contains);
  }
}


Hope this helps.
Thanks
Shinu.
Tags
Grid
Asked by
Bibhudutta
Top achievements
Rank 1
Answers by
Shinu
Top achievements
Rank 2
Share this question
or