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. Please help. Thank you very much.
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).
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 file:
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;
}
}