|
code
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Problem using AddHandler for dynamically created WebControlsa series of RadioButtons that I create in a loop. However, the handler is not being called for a reason I cannot determine. What is the problem? Here is my code: Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load currpoem = Server.UrlDecode(Request.QueryString("poem")) Dim ratinglabels As New TableRow Dim ratingselection As New TableRow For i As Integer = 1 To 10 Dim currlabel As New TableCell currlabel.EnableViewState = False currlabel.Font.Names = New String() {"Arial", "Helvetica", "Sans-Serif"} currlabel.Font.Size = FontUnit.Medium currlabel.HorizontalAlign = HorizontalAlign.Center currlabel.Text = i ratinglabels.Cells.Add(currlabel) Dim currselection As New TableCell Dim radioselection As New RadioButton currselection.EnableViewState = False currselection.HorizontalAlign = HorizontalAlign.Center radioselection.GroupName = "poemscore" radioselection.ID = "radScore" & i AddHandler radioselection.CheckedChanged, AddressOf Me.Rating_CheckedChanged currselection.Controls.Add(radioselection) ratingselection.Cells.Add(currselection) Next tblRatingChoices.Rows.Add(ratinglabels) tblRatingChoices.Rows.Add(ratingselection) lblRatePoem.Text = "Rate Poem:<br>" & currpoem TitleBar.InnerText = "Rate Poem: " & currpoem btnClose.Attributes.Add("onClick=", "window.close();") End Sub Private Sub Rating_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) score = CByte(CType(sender, RadioButton).ID.Substring(8)) btnSubmit.Enabled = True End Sub When the page is run, everything looks as expected, but the CheckedChanged event does not fire (or at least it does not call the Rating_CheckedChanged procedure as expected). Any ideas? Thanks. Nathan, the checked_changed event needs a "handles" clause. This is added by
default, but it will magically disappear if you, say, go into the html and change the id of the control. Add your own "handles..." or start over. Bill Show quoteHide quote "Nathan Sokalski" wrote: > I am using the AddHandler statement to add a CheckedChanged event handler to > a series of RadioButtons that I create in a loop. However, the handler is > not being called for a reason I cannot determine. What is the problem? Here > is my code: > > Private Sub Page_Load(ByVal sender As System.Object, ByVal e As > System.EventArgs) Handles MyBase.Load > currpoem = Server.UrlDecode(Request.QueryString("poem")) > Dim ratinglabels As New TableRow > Dim ratingselection As New TableRow > For i As Integer = 1 To 10 > Dim currlabel As New TableCell > currlabel.EnableViewState = False > currlabel.Font.Names = New String() {"Arial", "Helvetica", > "Sans-Serif"} > currlabel.Font.Size = FontUnit.Medium > currlabel.HorizontalAlign = HorizontalAlign.Center > currlabel.Text = i > ratinglabels.Cells.Add(currlabel) > > Dim currselection As New TableCell > Dim radioselection As New RadioButton > currselection.EnableViewState = False > currselection.HorizontalAlign = HorizontalAlign.Center > radioselection.GroupName = "poemscore" > radioselection.ID = "radScore" & i > AddHandler radioselection.CheckedChanged, AddressOf > Me.Rating_CheckedChanged > currselection.Controls.Add(radioselection) > ratingselection.Cells.Add(currselection) > Next > tblRatingChoices.Rows.Add(ratinglabels) > tblRatingChoices.Rows.Add(ratingselection) > lblRatePoem.Text = "Rate Poem:<br>" & currpoem > TitleBar.InnerText = "Rate Poem: " & currpoem > btnClose.Attributes.Add("onClick=", "window.close();") > End Sub > > Private Sub Rating_CheckedChanged(ByVal sender As System.Object, > ByVal e As System.EventArgs) > score = CByte(CType(sender, RadioButton).ID.Substring(8)) > btnSubmit.Enabled = True > End Sub > > > When the page is run, everything looks as expected, but the CheckedChanged > event does not fire (or at least it does not call the Rating_CheckedChanged > procedure as expected). Any ideas? Thanks. > -- > Nathan Sokalski > njsokal***@hotmail.com > http://www.nathansokalski.com/ > > > That was my first idea when writing the page (to manually create each of the
RadioButtons rather than generate them), so I decided to do that. Here is what I have now for the event handler: Private Sub Rating_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles radSelection1.CheckedChanged, radSelection2.CheckedChanged, radSelection3.CheckedChanged, radSelection4.CheckedChanged, radSelection5.CheckedChanged, radSelection6.CheckedChanged, radSelection7.CheckedChanged, radSelection8.CheckedChanged, radSelection9.CheckedChanged, radSelection10.CheckedChanged btnSubmit.Enabled = True score = CByte(CType(sender, RadioButton).ID.Substring(12)) End Sub As you can see, Rating_CheckedChanged is (supposedly) called by 10 different RadioButton's CheckedChanged events. However, when I ran the debugger this process was never called. I would think it would be called whenever the user selected a different RadioButton (since radSelection1-radSelection10 all have the same GroupName). Since the RadioButtons and Handles clause are always there in my code (they are not dynamically added anymore), what could be the problem? Thanks. Show quoteHide quote "Bill Borg" <BillB***@discussions.microsoft.com> wrote in message news:588E3111-3EBB-44F1-941A-88A469CA953C@microsoft.com... > Nathan, the checked_changed event needs a "handles" clause. This is added > by > default, but it will magically disappear if you, say, go into the html and > change the id of the control. Add your own "handles..." or start over. > > Bill > > "Nathan Sokalski" wrote: > >> I am using the AddHandler statement to add a CheckedChanged event handler >> to >> a series of RadioButtons that I create in a loop. However, the handler is >> not being called for a reason I cannot determine. What is the problem? >> Here >> is my code: >> >> Private Sub Page_Load(ByVal sender As System.Object, ByVal e As >> System.EventArgs) Handles MyBase.Load >> currpoem = Server.UrlDecode(Request.QueryString("poem")) >> Dim ratinglabels As New TableRow >> Dim ratingselection As New TableRow >> For i As Integer = 1 To 10 >> Dim currlabel As New TableCell >> currlabel.EnableViewState = False >> currlabel.Font.Names = New String() {"Arial", >> "Helvetica", >> "Sans-Serif"} >> currlabel.Font.Size = FontUnit.Medium >> currlabel.HorizontalAlign = HorizontalAlign.Center >> currlabel.Text = i >> ratinglabels.Cells.Add(currlabel) >> >> Dim currselection As New TableCell >> Dim radioselection As New RadioButton >> currselection.EnableViewState = False >> currselection.HorizontalAlign = HorizontalAlign.Center >> radioselection.GroupName = "poemscore" >> radioselection.ID = "radScore" & i >> AddHandler radioselection.CheckedChanged, AddressOf >> Me.Rating_CheckedChanged >> currselection.Controls.Add(radioselection) >> ratingselection.Cells.Add(currselection) >> Next >> tblRatingChoices.Rows.Add(ratinglabels) >> tblRatingChoices.Rows.Add(ratingselection) >> lblRatePoem.Text = "Rate Poem:<br>" & currpoem >> TitleBar.InnerText = "Rate Poem: " & currpoem >> btnClose.Attributes.Add("onClick=", "window.close();") >> End Sub >> >> Private Sub Rating_CheckedChanged(ByVal sender As System.Object, >> ByVal e As System.EventArgs) >> score = CByte(CType(sender, RadioButton).ID.Substring(8)) >> btnSubmit.Enabled = True >> End Sub >> >> >> When the page is run, everything looks as expected, but the >> CheckedChanged >> event does not fire (or at least it does not call the >> Rating_CheckedChanged >> procedure as expected). Any ideas? Thanks. >> -- >> Nathan Sokalski >> njsokal***@hotmail.com >> http://www.nathansokalski.com/ >> >> >>
Show quote
Hide quote
"Nathan Sokalski" <njsokal***@hotmail.com> wrote in message This is because you are creating the control in Page_Load, and then news:uWYa66GbFHA.796@TK2MSFTNGP09.phx.gbl... >I am using the AddHandler statement to add a CheckedChanged event handler >to a series of RadioButtons that I create in a loop. However, the handler >is not being called for a reason I cannot determine. What is the problem? >Here is my code: > > Private Sub Page_Load(ByVal sender As System.Object, ByVal e As > System.EventArgs) Handles MyBase.Load > currpoem = Server.UrlDecode(Request.QueryString("poem")) > Dim ratinglabels As New TableRow > Dim ratingselection As New TableRow > For i As Integer = 1 To 10 > Dim currlabel As New TableCell > currlabel.EnableViewState = False > currlabel.Font.Names = New String() {"Arial", "Helvetica", > "Sans-Serif"} > currlabel.Font.Size = FontUnit.Medium > currlabel.HorizontalAlign = HorizontalAlign.Center > currlabel.Text = i > ratinglabels.Cells.Add(currlabel) > > Dim currselection As New TableCell > Dim radioselection As New RadioButton > currselection.EnableViewState = False > currselection.HorizontalAlign = HorizontalAlign.Center > radioselection.GroupName = "poemscore" > radioselection.ID = "radScore" & i > AddHandler radioselection.CheckedChanged, AddressOf > Me.Rating_CheckedChanged > currselection.Controls.Add(radioselection) > ratingselection.Cells.Add(currselection) > Next > tblRatingChoices.Rows.Add(ratinglabels) > tblRatingChoices.Rows.Add(ratingselection) > lblRatePoem.Text = "Rate Poem:<br>" & currpoem > TitleBar.InnerText = "Rate Poem: " & currpoem > btnClose.Attributes.Add("onClick=", "window.close();") > End Sub > > Private Sub Rating_CheckedChanged(ByVal sender As System.Object, > ByVal e As System.EventArgs) > score = CByte(CType(sender, RadioButton).ID.Substring(8)) > btnSubmit.Enabled = True > End Sub > > > When the page is run, everything looks as expected, but the CheckedChanged > event does not fire (or at least it does not call the > Rating_CheckedChanged procedure as expected). Any ideas? Thanks. > -- > Nathan Sokalski > njsokal***@hotmail.com > http://www.nathansokalski.com/ > attaching the event handler to it. During the next postback, the control will get created again during page load and have the event handler attached to it. But the code that actually sync's the event to the event handler has already occured (before Page_Load is called)...therefore, you are expecting an event to be raised even though there is no control even created for the handler. So, try placing the code you have in Page_Load to Initialize (or whatever that darn method's name is). See if that works for ya :) Mythran
Dynamic Web Control Event Handling
Question about IE Web Controls Toolbar. Displaying label at runtime MasterPages in ASP.NET 2.0 Need a list of radiobuttons with a specfic format asp.net 1.1 wizard control Alignment of a System.Web.UI.WebControls.Image object Using html controls or asp controls Three buttons - one is pressed down element with 'disabled' property doesnt exist for form processing ? |
|||||||||||||||||||||||