<asp:datalist id="lista" runat="server">
    <ItemTemplate>
       <asp:DataList id="listb" runat="server" Width="122px">
           <ItemTemplate>
               <asp:RadioButtonList id="rblJiChu" runat="server"></asp:RadioButtonList>
           </ItemTemplate>
       </asp:DataList>
       <asp:HyperLink id=hlk runat="server" Text='<%# databinder.eval(container.Dataitem,"ID") %>'>
       </asp:HyperLink>
    </ItemTemplate>
</asp:datalist>
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '在此处放置初始化页的用户代码\
        Dim sqlConn As New SqlClient.SqlConnection(Global.sqlConnString)
        Dim dapTable As New SqlClient.SqlDataAdapter
        dapTable.SelectCommand = New SqlClient.SqlCommand("SELECT * FROM dbTable2 WHERE ID=4 OR ID=5 OR ID=6 OR ID=7", sqlConn)
        Dim tabTable As New DataTable
        dapTable.Fill(tabTable)
        lista.DataSource = tabTable
        lista.DataBind()
        sqlConn.Close()
    End Sub    Private Sub lista_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles lista.ItemDataBound
        Dim dltJiChuA As DataList = e.Item.FindControl("listb")
        Dim sqlConn As New SqlClient.SqlConnection(Global.sqlConnString)
        Dim hlk As HyperLink = e.Item.FindControl("hlk")
        Dim dapTable As New SqlClient.SqlDataAdapter
        Dim tabTable As New DataTable
        Dim rbl As RadioButtonList
        Select Case hlk.Text
            Case "4"
                dapTable.SelectCommand = New SqlClient.SqlCommand("SELECT * FROM dbTable4", sqlConn)
                dapTable.Fill(tabTable)
                dltJiChuA.DataSource = tabTable
                dltJiChuA.DataBind()
                rbl = dltJiChuA.Items(e.Item.ItemIndex).FindControl("rblJiChu")
                With rbl
                    .DataSource = tabTable
                    .DataTextField = "strTableName"
                    .DataBind()
                End With
            Case "5"
                dapTable.SelectCommand = New SqlClient.SqlCommand("SELECT * FROM dbTable5", sqlConn)
                dapTable.Fill(tabTable)
                dltJiChuA.DataSource = tabTable
                dltJiChuA.DataBind()
                rbl = dltJiChuA.Items(e.Item.ItemIndex).FindControl("rblJiChu")
                With rbl
                    .DataSource = tabTable
                    .DataTextField = "strTableName"
                    .DataBind()
                End With
            Case "6"
                dapTable.SelectCommand = New SqlClient.SqlCommand("SELECT * FROM dbTable6", sqlConn)
                dapTable.Fill(tabTable)
                dltJiChuA.DataSource = tabTable
                dltJiChuA.DataBind()
                rbl = dltJiChuA.Items(e.Item.ItemIndex).FindControl("rblJiChu")
                With rbl
                    .DataSource = tabTable
                    .DataTextField = "strTableName"
                    .DataBind()
                End With
            Case "7"
                dapTable.SelectCommand = New SqlClient.SqlCommand("SELECT * FROM dbTable7", sqlConn)
                dapTable.Fill(tabTable)
                dltJiChuA.DataSource = tabTable
                dltJiChuA.DataBind()
                rbl = dltJiChuA.Items(e.Item.ItemIndex).FindControl("rblJiChu")
                With rbl
                    .DataSource = tabTable
                    .DataTextField = "strTableName"
                    .DataBind()
                End With        End Select
        sqlConn.Close()
    End Sub

解决方案 »

  1.   

    mixing sql code and presentation code like the above is not good
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
         if not Page.IsPostBack then
            Dim sqlConn As New SqlClient.SqlConnection(Global.sqlConnString)
            Dim dapTable As New SqlClient.SqlDataAdapter
            dapTable.SelectCommand = New SqlClient.SqlCommand("SELECT * FROM dbTable2 WHERE ID=4 OR ID=5 OR ID=6 OR ID=7", sqlConn)
            Dim tabTable As New DataTable
            dapTable.Fill(tabTable)
            lista.DataSource = tabTable
            lista.DataBind()
            sqlConn.Close()
          End if
        End Subdim sharedTable as DataTable    Private Sub lista_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles lista.ItemDataBound    if e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem then        Dim dltJiChuA As DataList = e.Item.FindControl("listb")
            Dim sqlConn As New SqlClient.SqlConnection(Global.sqlConnString)
            Dim hlk As HyperLink = e.Item.FindControl("hlk")
            Dim dapTable As New SqlClient.SqlDataAdapter
            Dim tabTable As New DataTable dim strTableName as string = ""
            Select Case hlk.Text
                Case "4"
                     strTableName = "dbTable4"
                   
                Case "5"
                   strTableName = "dbTable5"
                Case "6"
                   strTableName = "dbTable6"
                    
                Case "7"
                   strTableName = "dbTable7"
                 
            End Select if strTableName.Length > 0 then
     AddHandler dltJiChuA.ItemDataBound, AddressOf listb_ItemDataBound
     dapTable.SelectCommand = New SqlClient.SqlCommand("SELECT * FROM " & strTableName, sqlConn)
             dapTable.Fill(tabTable)
     sharedTable = tabTable
             dltJiChuA.DataSource = tabTable
             dltJiChuA.DataBind()
    end if        sqlConn.Close()
       end if
        End Sub
    Private Sub listb_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) if e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem then         Dim rbl As RadioButtonList = DirectCast(e.Item.FindControl("rblJiChu"),RadioButtonList)
           
                        rbl .DataSource = sharedTable
                        rbl .DataTextField = "strTableName"
                        rbl .DataBind()
      end if
        End Sub