I have a section of my code that dynamically creates LinkButtons to allow
the user to go to the page containing a question they have not answered. The
code that creates the LinkButton is called, as well as the AddHandler line
(I ran a Debug and saw that it executes this code, and the links are
displayed on the page afterwards). However, the eventhandler is not called
when the LinkButton is clicked. Here is the code that dynamically generates
the LinkButtons as well as the eventhandler I want to be called:
'The code that generates the LinkButtons:
Private Sub btnSubmit_Click (ByVal sender As Object, ByVal e As
System.Web.UI.I mageClickEventA rgs) Handles btnSubmit.Click
Me.submitanswer s()
If Me.completetest () Then
'Code that I use to update my database, not involved in this
problem because Me.completetest () returns false
Else
Me.lblAnswered. Text = String.Format(" {0} of 75 Questions
Answered (Not Answered: ", CStr(Me.questio nsanswered()))
Dim myconnection As New
SqlConnection(S ystem.Configura tion.Configurat ionManager.AppS ettings("connec tionstring"))
Dim cmd As New SqlCommand("", myconnection)
Dim qnumreader As SqlDataReader
Dim insertafter As Integer =
Me.Form.Control s.IndexOf(Me.lb lAnswered) + 1
For i As Integer = 1 To 75
cmd.CommandText = String.Format(" SELECT
questions.quest ionnumber FROM useranswers INNER JOIN questions ON
useranswers.que stionid=questio ns.questionid WHERE
questions.quest ionnumber={0} AND useranswers.tes tid={1} AND
useranswers.use rid={2}", i, CStr(Session("t estid")),
CStr(Session("u serid")))
myconnection.Op en()
qnumreader = cmd.ExecuteRead er()
If Not qnumreader.Read () Then
Dim questionlink As New LinkButton()
questionlink.Ca usesValidation = False
questionlink.Co mmandArgument = i
questionlink.Cs sClass = "answerRED"
questionlink.En ableViewState = False
questionlink.Te xt = i & " "
AddHandler questionlink.Co mmand, AddressOf
Me.QuestionLink Command
Me.Form.Control s.AddAt(inserta fter, questionlink)
insertafter += 1
End If
myconnection.Cl ose()
Next
Me.lblClosePare n.Visible = True
End If
End Sub
'The eventhandler I want to use:
Private Sub QuestionLinkCom mand(ByVal sender As Object, ByVal e As
System.Web.UI.W ebControls.Comm andEventArgs)
Dim myconnection As New
SqlConnection(S ystem.Configura tion.Configurat ionManager.AppS ettings("connec tionstring"))
Dim cmd As New SqlCommand("SEL ECT subgroupid FROM questions WHERE
questionnumber= " & e.CommandArgume nt, myconnection)
myconnection.Op en()
Session("subgro upid") = CInt(cmd.Execut eScalar())
myconnection.Cl ose()
End Sub
When I run my Application, the code in btnSubmit_Click works as I expect (or
at least it looks like it did), but when I click the dynamically created
LinkButtons (variable name questionlink), they postback but do not trigger
the QuestionLinkCom mand method (the QuestionLinkCom mand never gets executed
when I do a debug session). I cannot figure out why they are not triggering
this eventhandler, because I use AddHandler statements when creating the
LinkButtons, and the eventhandler has the correct signature. Is there
something I am doing wrong? Thanks.
--
Nathan Sokalski
nj********@hotm ail.com
http://www.nathansokalski.com/