如何动态填充复选框值?

时间:2012-07-23 13:44:03

标签: c# vb.net

我在我的标记页面上:

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

由于@Raminson,它使用jQuery进行checkall / uncheckall复选框。

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

这很有效。

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

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

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标签。任何口味的任何帮助将不胜感激。

其中一个问题是我一直收到此错误:

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

sections.Checked = .Item(&#34; section&#34;)

我只是尝试将db field section的值赋给复选框值

2 个答案:

答案 0 :(得分:0)

  

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

- 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):属性“class”不是元素“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

答案 1 :(得分:0)

嗯,我会假设section列是bit类型的?如果是这样你可以使用reader对象的GetBoolean(0)方法,我对VB不太熟悉,但c#等价物将是sections.Checked = reader.GetBoolean(reader.GetOrdinal("section"));

希望这有帮助

相关问题