Dynamically create HTML anchor tag with server-side click event

Hi experts,

I am dynamically creating a navigation menu with tabs for the different pages/topics of a survey.  I'm doing this by concatenating the HTML code at runtime and setting it as the innerhtml property of a DIV tag on the page.  I need to make the anchor tags trigger a server-side click event rather than set the HREF property.  This is because I'm using the page's viewstate to store the user's answers as they progress through the survey rather than make a trip to the SQL database for each tab.

Can anyone tell me if this is possible, or if I'm overlooking something obvious?  If more information/code samples are needed, please let me know.  Thanks in advance!

P.S. If this seems overly complicated, I agree.  But I have requirements for compatibility with css, etc.

        Protected WithEvents header As System.Web.UI.HtmlControls.HtmlGenericControl

        Dim strMenuHtml As New StringBuilder("<ul>")

        ' Loop through each page in the form and add a menu item
        For i As Integer = 1 To objForm.PageCount - 1
            strMenuHtml.Append("<li ")
            If i = intPage Then
                strMenuHtml.Append("id=""current"" ")
                strMenuHtml.Append("id=""menuOption" & i & """ ")
            End If
            strMenuHtml.Append("runat=""server"" command=""" & i & """><a href=""Default.aspx?Form=" & intForm & "&Page=" & i & """>" & GetPageCaption(i) & "</a></li>")


        ' Insert the HTML code into the menu DIV tag
        header.InnerHtml = strMenuHtml.ToString

Who is Participating?
dynamicrevolutionsConnect With a Mentor Commented:
   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim i As Integer
        Dim ul As New HtmlGenericControl
        ul.TagName = "ul"
        Dim li As HtmlGenericControl
        Dim a As LinkButton
        For i = 0 To 10
            li = New HtmlGenericControl
            li.TagName = "li"
            li.ID = "menuOption" & i
            a = New LinkButton
            a.Text = "button" & i
            AddHandler a.Click, AddressOf someEvent

    End Sub

    Private Sub someEvent(ByVal o As Object, ByVal e As EventArgs)
        Dim a As LinkButton = o
    End Sub

like sammy1971  said, u're thinking too much old school asp/php/whatever
think OOP, Objects bla bla
SammyConnect With a Mentor Commented:
You are thinking asp not asp.net in your code
what you need to do is place a placeholder in your div and add the controls to the place holder as you build them
take a look here
it should be a good place to start

Good Luck
Use __doPostBack from Javascript

Check this article for more http://www.codeproject.com/aspnet/ClientServerInteraction.asp

esdTeamstersAuthor Commented:
Thanks for all the advice!  I haven't done much with HtmlGenericControl in the past, so I wasn't sure it was possible to add HTML controls in this way.  The sample code posted by dynamicrevolutions was a huge help!
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.