P
Paul
Hallo,
I have a radiobuttonlist control that is added on a custom Web User Control.
This control has a property that exposes the SelectedIndex property of the
embedded radiobuttonlist.
When running this in IE, behaviour is as I would expect it. If I select an
item and do a postback, the page remembers my selection when reloading, and
the SelectedIndex property of my control returns the correct value.
When running this in Firefox 3, I always get a -1 for the SelectedIndex
prop, and the page does not remember my selection when reloading.
If I add a radiobuttonlist directly on to an ASPX page, behaviour is as
expected. Only fails in Firefox when the control is on a custom Web User
Control.
Below I will paste the aspx, ascx, and their respective code behind files.
..Net Framework 3.5. Any advice would be appreciated.
Thanks
Paul
1. FF.aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="FF.aspx.vb"
Inherits="FF" %>
<%@ Register Src="TEST.ascx" TagName="TESTcontrol" TagPrefix="uc1" %>
<!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>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asplaceHolder ID="PlaceHolder1" runat="server"></asplaceHolder>
</div>
<asp:Button ID="Button1" runat="server" Text="Button" Width="55px" />
</form>
</body>
</html>
2. FF.aspx.vb
Partial Class FF
Inherits System.Web.UI.Page
Protected WithEvents rbl As test
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
rbl = CType(Me.LoadControl("TEST.ascx"), TEST)
rbl.ID = "rblID99"
PlaceHolder1.Controls.Add(rbl)
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Check(Me)
End Sub
Sub Check(ByVal _control As Control)
If _control.ID IsNot Nothing Then
If _control.GetType.ToString =
"System.Web.UI.WebControls.RadioButtonList" Then
Response.Write(CType(_control,
RadioButtonList).SelectedIndex & " - selected index<br/>")
If CType(_control, RadioButtonList).SelectedIndex < 0 Then
MsgBox("Not checked.", MsgBoxStyle.ApplicationModal,
"Questions.")
End If
End If
End If
If _control.HasControls Then
For Each ctrl As Control In _control.Controls
Check(ctrl)
Next
End If
End Sub
End Class
3. TEST.ascx
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="TEST.ascx.vb"
Inherits="TEST" Classname="TEST"%>
<p style="width: 500px">
<asp:Label ID="Question_TXT" runat="server">Q</asp:Label>
</p>
<p style="width: 500px">
<asp:RadioButtonList ID="Answer_RBL" runat="server">
<asp:ListItem></asp:ListItem>
<asp:ListItem></asp:ListItem>
</asp:RadioButtonList>
</p>
</p>
4. TEST.ascx.vb
Partial Class TEST
Inherits System.Web.UI.UserControl
Public ReadOnly Property SelectedIndex() As Integer
Get
Return Answer_RBL.SelectedIndex
End Get
End Property
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Question_TXT.Text = "Pick One"
Answer_RBL.Items(0).Text = vbTab & "First"
Answer_RBL.Items(1).Text = vbTab & "Second"
End Sub
End Class
I have a radiobuttonlist control that is added on a custom Web User Control.
This control has a property that exposes the SelectedIndex property of the
embedded radiobuttonlist.
When running this in IE, behaviour is as I would expect it. If I select an
item and do a postback, the page remembers my selection when reloading, and
the SelectedIndex property of my control returns the correct value.
When running this in Firefox 3, I always get a -1 for the SelectedIndex
prop, and the page does not remember my selection when reloading.
If I add a radiobuttonlist directly on to an ASPX page, behaviour is as
expected. Only fails in Firefox when the control is on a custom Web User
Control.
Below I will paste the aspx, ascx, and their respective code behind files.
..Net Framework 3.5. Any advice would be appreciated.
Thanks
Paul
1. FF.aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="FF.aspx.vb"
Inherits="FF" %>
<%@ Register Src="TEST.ascx" TagName="TESTcontrol" TagPrefix="uc1" %>
<!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>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asplaceHolder ID="PlaceHolder1" runat="server"></asplaceHolder>
</div>
<asp:Button ID="Button1" runat="server" Text="Button" Width="55px" />
</form>
</body>
</html>
2. FF.aspx.vb
Partial Class FF
Inherits System.Web.UI.Page
Protected WithEvents rbl As test
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
rbl = CType(Me.LoadControl("TEST.ascx"), TEST)
rbl.ID = "rblID99"
PlaceHolder1.Controls.Add(rbl)
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Check(Me)
End Sub
Sub Check(ByVal _control As Control)
If _control.ID IsNot Nothing Then
If _control.GetType.ToString =
"System.Web.UI.WebControls.RadioButtonList" Then
Response.Write(CType(_control,
RadioButtonList).SelectedIndex & " - selected index<br/>")
If CType(_control, RadioButtonList).SelectedIndex < 0 Then
MsgBox("Not checked.", MsgBoxStyle.ApplicationModal,
"Questions.")
End If
End If
End If
If _control.HasControls Then
For Each ctrl As Control In _control.Controls
Check(ctrl)
Next
End If
End Sub
End Class
3. TEST.ascx
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="TEST.ascx.vb"
Inherits="TEST" Classname="TEST"%>
<p style="width: 500px">
<asp:Label ID="Question_TXT" runat="server">Q</asp:Label>
</p>
<p style="width: 500px">
<asp:RadioButtonList ID="Answer_RBL" runat="server">
<asp:ListItem></asp:ListItem>
<asp:ListItem></asp:ListItem>
</asp:RadioButtonList>
</p>
</p>
4. TEST.ascx.vb
Partial Class TEST
Inherits System.Web.UI.UserControl
Public ReadOnly Property SelectedIndex() As Integer
Get
Return Answer_RBL.SelectedIndex
End Get
End Property
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Question_TXT.Text = "Pick One"
Answer_RBL.Items(0).Text = vbTab & "First"
Answer_RBL.Items(1).Text = vbTab & "Second"
End Sub
End Class