Hi there,
The RadcomboBox OnSelectedIndexChanged event fired unexpected after I refresh page in firefox, however, it is working fine in IE and Chrome. Here is my code and scenario.
1 Use firefox to open the page
2 Select value from the first ComboBox
3 Select value from the second ComboBox
4 Refresh Page
5 Click the "Explore" button on the page, the OnSelectedIndexChanged
event of the first RadComboBox got fired in Firefox (working fine in IE
and Chrome).
Please help. Thank you very much.
Default.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %>
<!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
>Telerik ASP.NET Example</
title
>
<
link
rel
=
"stylesheet"
type
=
"text/css"
href
=
"styles.css"
/>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
telerik:RadScriptManager
runat
=
"server"
ID
=
"RadScriptManager1"
/>
<
telerik:RadFormDecorator
ID
=
"FormDecorator1"
runat
=
"server"
/>
<
div
class
=
"qsf-demo-canvas"
>
<
div
class
=
"continents"
>
<
telerik:RadComboBox
ID
=
"RadComboBox1"
runat
=
"server"
Width
=
"186px"
AutoPostBack
=
"true"
Filter
=
"Contains"
datatextfield
=
"Name"
datavaluefield
=
"ID"
OnDataBound
=
"ddlBox1_DataBound"
OnSelectedIndexChanged
=
"RadComboBox1_SelectedIndexChanged"
>
</
telerik:RadComboBox
>
</
div
>
<
div
class
=
"countries"
>
<
telerik:RadComboBox
ID
=
"RadComboBox2"
runat
=
"server"
Width
=
"186px"
AutoPostBack
=
"true"
Filter
=
"Contains"
datatextfield
=
"Name"
datavaluefield
=
"ID"
OnDataBound
=
"ddlBox2_DataBound"
OnSelectedIndexChanged
=
"RadComboBox2_SelectedIndexChanged"
>
</
telerik:RadComboBox
>
</
div
>
<
div
>
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
AllowPaging
=
"True"
CellSpacing
=
"0"
AllowSorting
=
"true"
GridLines
=
"None"
Width
=
"800px"
>
<
ClientSettings
>
<
Selecting
AllowRowSelect
=
"true"
/>
</
ClientSettings
>
<
MasterTableView
AutoGenerateColumns
=
"False"
DataKeyNames
=
"ID"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"ID"
DataType
=
"System.String"
HeaderText
=
"StateID"
ReadOnly
=
"True"
SortExpression
=
"ID"
UniqueName
=
"ID"
>
</
telerik:GridBoundColumn
>
<
telerik:GridDateTimeColumn
DataField
=
"Name"
DataType
=
"System.String"
HeaderText
=
"Name"
SortExpression
=
"Name"
UniqueName
=
"Name"
>
</
telerik:GridDateTimeColumn
>
</
Columns
>
</
MasterTableView
>
<
FilterMenu
EnableImageSprites
=
"False"
>
</
FilterMenu
>
</
telerik:RadGrid
>
</
div
>
<
p
class
=
"buttons"
>
<
asp:Button
ID
=
"Button1"
runat
=
"server"
Text
=
"Explore"
OnClick
=
"Button1_Click"
/>
</
p
>
<
div
class
=
"result"
>
<
asp:Label
runat
=
"server"
ID
=
"Literal1"
/>
</
div
>
</
div
>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadComboBox1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadComboBox2"
/>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadGrid1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadComboBox2"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadGrid1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
</
form
>
</
body
>
</
html
>
Code behind
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Linq;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web.Security;
using System.Collections.Generic;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Telerik.Web.UI;
public partial class Default : System.Web.UI.Page
{
public class State
{
public String ID { get; set; }
public String Name { get; set; }
}
public class City
{
public String ID { get; set; }
public String Name { get; set; }
public String StateID { get; set; }
}
public List<
State
> GetStateList()
{
List<
State
> _list = new List<
State
>();
State d1 = new State();
d1.Name = "AB";
d1.ID = "1";
State d2 = new State();
d2.Name = "BC";
d2.ID = "2";
State d3 = new State();
d3.Name = "ON";
d3.ID = "3";
_list.Add(d1);
_list.Add(d2);
_list.Add(d3);
return _list;
}
public List<
City
> GetCityList(String _stateID)
{
List<
City
> _list = new List<
City
>();
List<
City
> _newList = new List<
City
>();
City c1 = new City();
c1.Name = "Calgary";
c1.ID = "1";
c1.StateID = "1";
City c2 = new City();
c2.Name = "Edmonton";
c2.ID = "2";
c2.StateID = "1";
City c3 = new City();
c3.Name = "Vancouver";
c3.ID = "3";
c3.StateID = "2";
City c4 = new City();
c4.Name = "Victoria";
c4.ID = "4";
c4.StateID = "2";
City c5 = new City();
c5.Name = "Toronto";
c5.ID = "5";
c5.StateID = "3";
City c6 = new City();
c6.Name = "Ottawa";
c6.ID = "6";
c6.StateID = "3";
_list.Add(c1);
_list.Add(c2);
_list.Add(c3);
_list.Add(c4);
_list.Add(c5);
_list.Add(c6);
var _result = _list.Where(t => t.StateID == _stateID);
foreach (var _item in _result)
{
City d = new City();
d.ID = _item.ID;
d.StateID = _item.StateID;
d.Name = _item.Name;
_newList.Add(d);
}
return _newList;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
LoadBox1();
}
protected void RadComboBox1_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
if (e.Value != String.Empty)
{
LoadBox2(e.Value);
List<
State
> _test = new List<
State
>();
RadGrid1.DataSource = _test;
RadGrid1.DataBind();
}
}
protected void RadComboBox2_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
if (e.Value != String.Empty)
{
LoadGrid();
}
}
public void LoadGrid()
{
RadGrid1.DataSource = GetStateList();
RadGrid1.DataBind();
}
protected void LoadBox1()
{
RadComboBox1.DataSource = GetStateList();
RadComboBox1.DataBind();
}
protected void LoadBox2(string _stateID)
{
RadComboBox2.DataSource = GetCityList(_stateID);
RadComboBox2.DataBind();
}
protected void ddlBox1_DataBound(object sender, EventArgs e)
{
var combo = (RadComboBox)sender;
combo.Items.Insert(0, new RadComboBoxItem("Please Select", String.Empty));
RadComboBox2.Items.Insert(0, new RadComboBoxItem("Please Select", String.Empty));
}
protected void ddlBox2_DataBound(object sender, EventArgs e)
{
var combo = (RadComboBox)sender;
combo.Items.Insert(0, new RadComboBoxItem("Please Select", String.Empty));
}
protected void Button1_Click(object sender, EventArgs e)
{
//Literal1.Text = string.Empty;
}
}