0

我在我的标记页面上:

<asp:CheckBox runat="server" ID="sections" class="checkAll" />

感谢@Raminson,它使用 jQuery 来选中/取消选中复选框。

然后我在代码文件上有这个: Me.sections.InputAttributes.Add("Value", "Miracle Alley")

这行得通。

我现在遇到的问题是我们想从数据库中动态填充复选框的值。

我有点卡住了。下面是我这样做的尝试。

Imports System.Data.SqlClient
Partial Class _Default
    Inherits System.Web.UI.Page

    Private Sub Page_Load(ByVal sender As Object, 
                          ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            Dim strSQL As String = "SELECT section FROM myTable"
            Dim connStr As String = 
              ConfigurationManager.ConnectionStrings("connstr").ConnectionString
            Dim conn As New SqlConnection(connStr)
            Dim cmd As New SqlCommand(strSQL, conn)
            Dim objReader As SqlDataReader

            objReader = cmd.ExecuteReader()
            '   |||||   Loop through the Reader to retrieve data    
            '   |||||   and set each checkbox to appropriate data from datasource
            While objReader.Read()
                With objReader
                    sections.Checked = .Item("section")
                End With
            End While
            Me.sessions.InputAttributes.Add("Value", "sections")
        End If
    End Sub
End Class

我很抱歉同时选择了 c# 和 vb.net 标签。任何口味的任何帮助将不胜感激。

问题之一是我不断收到此错误:

输入字符串的格式不正确。 这是在这条线上:

section.Checked = .Item("section")

我只是想将 db 字段部分的值分配给复选框值

4

2 回答 2

0

CheckBox 控件在 Web 窗体页上创建一个复选框,允许用户在真或假状态之间切换。

-- http://msdn.microsoft.com/en-us/library/4s78d0k1(v=vs.71).aspx

我建议使用 CheckBoxList 而不是 CheckBox。

标记:

<asp:CheckBox runat="server" ID="sections" CssClass="checkAll" />
<asp:CheckBoxList runat="server" ID="sect" CssClass="checkAll" >
</asp:CheckBoxList>        

代码背后:

    If Not Page.IsPostBack Then
        Dim strSQL As String = "SELECT section FROM myTable"
        Dim connStr As String = ConfigurationManager.ConnectionStrings("connstr").ConnectionString
        Dim conn As New SqlConnection(connStr)
        Dim cmd As New SqlCommand(strSQL, conn)
        Dim objReader As SqlDataReader

        objReader = cmd.ExecuteReader()
        '   |||||   Loop through the Reader to retrieve data    
        '   |||||   and set each checkbox to appropriate data from datasource
        While objReader.Read()
            With objReader
                Dim li As New ListItem(objReader(0).ToString())
                sect.Items.Add(li)
            End With
        End While

    End If

PS -

我收到包含 class="checkAll" 值对的警告。

消息 1 验证 (ASP.Net):属性“类”不是元素“CheckBox”的有效属性。

改用 CssClass。

更新(添加选中/取消选中所有功能)

标记:

<asp:Button runat="server" ID="btnCheck" Text="Check All" OnClick="btnCheck_Click" />
<asp:Button runat="server" ID="btnUncheck" Text="Uncheck All" OnClick="btnUncheck_Click" />

代码背后:

Protected Sub btnCheck_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnCheck.Click
    For Each listItem As ListItem In sect.Items
        listItem.Selected = True
    Next
End Sub

Protected Sub btnUncheck_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnUncheck.Click
    For Each listItem As ListItem In sect.Items
        listItem.Selected = False
    Next
End Sub

不要忘记这些:

Protected WithEvents btnCheck As Button
Protected WithEvents btnUncheck As Button
于 2012-07-23T14:08:13.417 回答
0

好吧,我将假设部分列的类型是位?如果是这样,您可以使用读取器对象的 GetBoolean(0) 方法,我对 VB 不太熟悉,但 c# 等价物是sections.Checked = reader.GetBoolean(reader.GetOrdinal("section"));

希望这可以帮助

于 2012-07-23T14:08:50.100 回答