Hello. I'm noticing that when I set the AutoPostBackOnFilter=true for a column that filtering on that column by pressing the enter key causes display of a non-modal loading panel. The two cases I have observed are:
Case 1 - Incorrect modal behavior when ShowFilterIcon="false" and AutoPostBackOnFilter="true"
Case 2 - Correct modal behavior when ShowFilterIcon="true" and AutoPostBackOnFilter="true"
I am using ASP.NET AJAX controls version 2011.1.519.40 and observed this behavior on the following browsers:
Below is markup, code-behind and a sample data item class that demonstrates the problem. Thank you.
Markup
Code-behind
App_Code sample data item class
Case 1 - Incorrect modal behavior when ShowFilterIcon="false" and AutoPostBackOnFilter="true"
Case 2 - Correct modal behavior when ShowFilterIcon="true" and AutoPostBackOnFilter="true"
I am using ASP.NET AJAX controls version 2011.1.519.40 and observed this behavior on the following browsers:
- IE 9
- Firefox 5.0
- Chrome 13.0.782.112 m
- Safari 5.0.5
Below is markup, code-behind and a sample data item class that demonstrates the problem. Thank you.
Markup
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %><!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>When AutoPostBackOnFilter is on Loading Panel is not modal</title></head><body> <form id="form1" runat="server"> <telerik:RadScriptManager ID="scriptManager" runat="server"> </telerik:RadScriptManager> <telerik:RadAjaxManager ID="ajaxManager" runat="server" DefaultLoadingPanelID="loading"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="grid"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="grid" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> <telerik:RadAjaxLoadingPanel ID="loading" runat="server" Skin="Windows7" Transparency="1"> </telerik:RadAjaxLoadingPanel> <p> The setting of ShowFilterIcon along with AutoPostBackOnFilter for grid columns causes inconsistent behavior of the loading panel modality. <ul> <li> Case 1 - Incorrect modal behavior when ShowFilterIcon="false" and AutoPostBackOnFilter="true" </li> <li> Case 2 - Correct modal behavior when ShowFilterIcon="true" and AutoPostBackOnFilter="true" </li> </ul> </p> <p> To have time to observe the behavior, long filter times are simulated by Thread.Sleep() - about 5 seconds - in code behind. <br /> <h4>Steps to reproduce the incorrect behavior:</h4> <ol> <li> Enter filter text in the 'Case 1' column. </li> <li> Press enter. </li> <li> Using mouse, click anywhere on the grid. Note that the filter textbox will also recieve focus if clicked. </li> <li> Observe the loading panel disappears, and after 5 or so seconds, the filter operation finishes successfully. </li> </ol> <h4>Steps to observe the correct behavior:</h4> <ol> <li> Enter filter text in the 'Case 2' column </li> <li> Click the filter button. </li> <li> Using mouse, click anywhere on the grid or the filter textbox. </li> <li> Observe the loading panel is modal and does not disappear until completion of the filter process. </li> </ol> </p> <br /> <telerik:RadGrid ID="grid" runat="server" AllowFilteringByColumn="True" AutoGenerateColumns="False" AllowPaging="True" Skin="Windows7" OnNeedDataSource="grid_NeedDataSource"> <MasterTableView> <Columns> <telerik:GridBoundColumn DataField="Id" UniqueName="Id" AllowFiltering="false" HeaderText="Id"/> <telerik:GridBoundColumn DataField="Name" UniqueName="Name" ShowFilterIcon="false" AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" HeaderText="Case 1 - Incorrect - Loading panel will not be modal when filtering on this column by pressing the enter key"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Title" UniqueName="Title" ShowFilterIcon="true" AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" HeaderText="Case 2 - Correct - Loading panel will still be modal when filtering on this column by clicking the filter button"> </telerik:GridBoundColumn> </Columns> </MasterTableView> </telerik:RadGrid> </form></body></html>Code-behind
using System;using System.Linq;using System.Collections.Generic;using System.Threading;using Telerik.Web.UI;public partial class _Default : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { Thread.Sleep(3000); if (!this.IsPostBack) { this.BuildData(); } } protected void grid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) { this.grid.DataSource = this.Data; } private List<SampleDataItem> Data { get { return (List<SampleDataItem>)this.ViewState["Data"]; } set { this.ViewState["Data"] = value; } } private void BuildData() { var query = from i in Enumerable.Range(1, 10000) select new SampleDataItem() { Id = i, Name = Guid.NewGuid().ToString(), Title = Guid.NewGuid().ToString() }; this.Data = query.ToList(); }}App_Code sample data item class
using System;[Serializable]public class SampleDataItem{ public SampleDataItem() { } public long Id { get; set; } public string Name { get; set; } public string Title { get; set; }}