repeater嵌套checkbox选项的取值赋值

来源:互联网 发布:优化目标函数 编辑:程序博客网 时间:2024/05/16 04:23

前台

 <asp:Repeater id="rptMainMenu" runat="server">
  <HeaderTemplate>
    <table id="table01" width="149" border="0" cellspacing="0" cellpadding="0">
  </HeaderTemplate>
  <ItemTemplate>
    <tr class ="tr" >
      <td id="tdManiMenu"  >
         <asp:CheckBox ID ="cbxAll"  runat ="server" Text ='<%# DataBinder.Eval(Container.DataItem, "标题") %>'  Font-Bold ="true"></asp:CheckBox>
     </td>
    </tr>
     <tr  class ="tr">
      <td id="tdMenuBorder">
          <asp:Repeater id="rptMainDetail" runat="server">
           <ItemTemplate>
             <tr>
               <td style =" padding-left :10px">
                 <asp:CheckBox ID="cbxMenuDetail" runat="server" Font-Size ="small"    Text ='<%# DataBinder.Eval(Container.DataItem, "标题") %>'
                    ></asp:CheckBox>
                 <asp:HiddenField runat ="server" ID ="hidValue" Value ='<%# DataBinder.Eval(Container.DataItem, "ID") %>' />
                </td>
            </tr>
          </ItemTemplate>
         </asp:Repeater>
      </td>
      </tr> 
  </ItemTemplate>
  <FooterTemplate>
    </table>
  </FooterTemplate>
   </asp:Repeater>

后台vb

 ''' <summary>
    ''' 获得Repeater的checkbox的选项值
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function GetRepeater() As String
        Dim str As String = ""
        Dim i As Integer = 0
        Dim j As Integer = 0
        For i = 0 To Me.rptMainMenu.Items.Count - 1
            Dim rptMenuDetail As Repeater = Me.rptMainMenu.Items(i).FindControl("rptMainDetail")
            For j = 0 To rptMenuDetail.Items.Count - 1
                Dim cbxMenuDetail As CheckBox = rptMenuDetail.Items(j).FindControl("cbxMenuDetail")
                Dim hidValue As HiddenField = rptMenuDetail.Items(j).FindControl("hidValue")
                If cbxMenuDetail.Checked = True Then
                    str = str + "," + hidValue.Value
                End If
            Next
        Next
        If str <> "" Then
            str = str.Substring(1, str.Length - 1)
        End If
        Return str
    End Function
    ''' <summary>
    ''' 设置Repeater的checkbox的选项值
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub SetRepeater(ByVal str As String)
        Dim i As Integer = 0
        Dim j As Integer = 0
        Dim n As Integer = 0
        Dim arr As Array = str.Split(",")
        For i = 0 To Me.rptMainMenu.Items.Count - 1
            Dim cbxAll As CheckBox = rptMainMenu.Items(i).FindControl("cbxAll")
            Dim flag As Boolean = True
            Dim rptMenuDetail As Repeater = Me.rptMainMenu.Items(i).FindControl("rptMainDetail")
            For j = 0 To rptMenuDetail.Items.Count - 1
                Dim cbxMenuDetail As CheckBox = rptMenuDetail.Items(j).FindControl("cbxMenuDetail")
                Dim hidValue As HiddenField = rptMenuDetail.Items(j).FindControl("hidValue")
                For n = 0 To UBound(arr)
                    If hidValue.Value = arr(n) Then
                        cbxMenuDetail.Checked = True
                    End If
                Next
                If cbxMenuDetail.Checked = False Then
                    flag = False
                End If
            Next
            If flag Then
                cbxAll.Checked = True
            End If
        Next
    End Sub

原创粉丝点击