ASP VB 卡在动态控件、视图状态和回发上.真的可以用一些帮助回到正轨



我一直在阅读帖子和文章,只是有点困惑,因此燃烧了我目前没有的时间

有人可以查看我的代码并告诉我哪里出错了吗?

    Partial Class PayerContacts
    Inherits System.Web.UI.Page
    Dim connStrDRContacts As String = ConfigurationManager.ConnectionStrings("DRContacts_SQL").ConnectionString
    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        navBuild()
    End Sub
    Protected Sub Page_Init(sender As Object, e As EventArgs) Handles Me.Init
        If IsPostBack Then
            LoadContacts(ViewState("objSender"))
        End If
    End Sub
    Private Function navBuild() As Integer
        Dim SQLstrDRs As String = "SELECT * FROM DRList"
        Dim DbConnDRs As SqlConnection = New SqlConnection(connStrDRContacts)
        DbConnDRs.Open()
        Dim dtDRsTemp As New DataTable
        Dim SQLAdapterDRs As New SqlDataAdapter(SQLstrDRs, DbConnDRs)
        SQLAdapterDRs.Fill(dtDRsTemp)
        'Loop through each row of the DataView to create HTML table data
        Dim NewTableRow As New TableRow
        For Each row As DataRow In dtDRsTemp.Rows
    'CREATE table with button to display contacts related to client (one to many)   
            Dim NewTableButton As LinkButton = New LinkButton
            NewTableButton.ID = "btnDRName" & NewTableText
            NewTableButton.ViewStateMode = UI.ViewStateMode.Enabled
            AddHandler NewTableButton.Click, AddressOf LoadContacts
        Next
        Return 0
    End Function
    Protected Sub LoadContacts(sender As Object, e As EventArgs)
        Dim LoopCount As Integer = 0
        Dim SQLstrLoadTable As String = "SELECT * FROM ContactList WHERE DRVendor = '" & sender.Text.ToString & "'"
    and so on....
        SQLAdapterLoadTable.Fill(dtLoadTableTemp)
        Dim NewTableRow As New TableRow
        For Each row As DataRow In dtLoadTableTemp.Rows
            'CREATE Accordion to display data
            NewAccordion.ID = "ContactAccordion" & LoopCount
            NewAccordion.Visible = True
    blah, blah...
            'SET Pane
            NewAccordionPane.HeaderContainer.ID = "PaneHeader" & LoopCount
            NewAccordionPane.ContentContainer.ID = "PaneContent" & LoopCount
    'CREATE button to open ModalPopup to EDIT each record
            Dim imgGear As New ImageButton
            imgGear.ID = "btnGear" & row!ID.ToString
            imgGear.ViewStateMode = UI.ViewStateMode.Enabled
            AddHandler imgGear.Click, AddressOf EditRecord
            'LOAD Pane
            NewAccordionPane.HeaderContainer.Controls.Add(NewHeaderTable)
            NewAccordionPane.ContentContainer.Controls.Add(New LiteralControl(NewTableText))

        ViewState("objSender") = sender
    End Sub
    Protected Sub EditRecord(ByVal sender As Object, ByVal e As EventArgs)
        'Open ModalPopup to edit record
        popup.Show()
        pnlAddEdit.Visible = True
    End Sub
End Class

每个 Webforms 开发人员都应该阅读有关 ViewState 和动态控件的无限循环文章:

http://mocha.mojoskins.com/SharedFiles/Download.aspx?pageid=566&mid=786&fileid=38

http://weblogs.asp.net/infinitiesloop/TRULY-Understanding-Dynamic-Controls-_2800_Part-1_2900_

这些示例是用 C# 编写的,但您应该能够弄清楚发生了什么,毕竟它是相同的基类库。

相关内容

  • 没有找到相关文章

最新更新