0

最初に、ID="recs" のマークアップ ページにチェックボックス リスト コントロールがあります。

そのマークアップで、すべてのチェックボックスをオン/オフにします。このようにして、ユーザーは 1 つまたは複数のチェックボックスをオンにできます。

次のコードを使用して、チェック ボックスの値を取得できました。

Protected Sub btnGetCheck_Click(ByVal sender As Object, ByVal e As EventArgs)

    Thread.Sleep(9000)

    Dim uItems As String = ""
    For i As Integer = 0 To recs.Items.Count - 1
        If recs.Items(i).Selected Then
            If uItems <> "" Then uItems = uItems & ","
            uItems = uItems & _
                "You checked" & recs.Items(i).Text & "from the db"

        End If
    Next
    Response.Redirect("sendto.aspx?p=" & Server.UrlEncode(uItems))
End Sub

これは私たちにとって本当にうまくいきました。

しかし、今朝、マークアップにさらに列を追加するように依頼されました。これは不可能であることが判明しました。

gridview を使用して、checkboxlist からチェックボックスに切り替えることにしました。

上記のコードを書き直して、グリッドビューのチェックボックスからチェックされたアイテムを取得するのを手伝っていただければ幸いです。

Gridview のコード スニップを以下に示します。

<asp:GridView ID="GridView1" runat="server"  HeaderStyle-CssClass = "header"
    AutoGenerateColumns = "false" Font-Names = "Arial"  OnRowDataBound = "RowDataBound"
    Font-Size = "11pt" AlternatingRowStyle-BackColor = "#C2D69B" >
   <Columns>
    <asp:TemplateField>
        <HeaderTemplate>
            <asp:CheckBox ID="checkAll" runat="server" onclick = "checkAll(this);" />
        </HeaderTemplate> 
       <ItemTemplate>
           <asp:CheckBox ID="recs" runat="server" onclick = "Check_Click(this)" />
       </ItemTemplate> 
    </asp:TemplateField> 
    <asp:BoundField ItemStyle-Width = "150px" DataField = "custid" HeaderText = "Customer ID" />
    <asp:BoundField ItemStyle-Width = "150px" DataField = "firstname" HeaderText = "First Name" />
    <asp:BoundField ItemStyle-Width = "150px" DataField = "lastname" HeaderText = "Last Name"/>
    <asp:BoundField ItemStyle-Width = "150px" DataField = "os"  HeaderText = "OS"/>
   </Columns> 
</asp:GridView>
       <asp:Button ID="btnGetCheck" runat="server" Text="Get Checked Items" onclick="btnGetCheck_Click" /><br />


Dim uItems As String = String.Empty

        For Each r As GridViewRow In GridView1.Rows

            If CType(r.Cells(0).FindControl("recs"), CheckBox).Checked Then

                If uItems <> String.Empty Then

                    uItems += ","

                End If

                uItems += "You checked " & CType(r.Cells(1).FindControl("recs"), CheckBox).Text & " from the db."
                Response.Write(uItems)
                Response.End()

            End If
4

1 に答える 1

0

GridView の行を反復処理し、FindControl メソッドを使用してチェックボックスへの参照を取得します。

Dim uItems As String = String.Empty

For Each r As GridViewRow In GridView1.Rows

    If CType(r.Cells(0).FindControl("recs"), CheckBox).Checked Then

        If uItems <> String.Empty Then

            uItems += ","

        End If

        uItems += "You checked " & CType(r.Cells(0).FindControl("recs"), CheckBox).Text & " from the db."

    End If

Next
于 2012-08-03T15:46:38.710 に答える