最初に、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