2012-07-23 124 views
0

我这是我的标记网页上:如何动态填充复选框值?

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

它用jQuery进行感谢@Raminson checkall/uncheckall复选框。

然后,我有这样的的CodeFile: Me.sections.InputAttributes.Add( “价值”, “奇迹巷”)

这工作。

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

我有点卡住了。以下是我的尝试。

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( “节”)

我只是想分贝场区间的值赋给复选框值

回答

0

The CheckBox control creates a check box on the Web Forms page that allows the user to switch between a true or false state.

- 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 -

我得到列入类= “checkAll” 值对的警告。

Message 1 Validation (ASP.Net): Attribute 'class' is not a valid attribute of element 'CheckBox'.

改为使用CssClass。

UPDATE(添加检查/全部取消功能)

标记:

<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 
+0

对不起的好帮手。我被邀请参加会议。 @ GrayFox374,你的解决方案就像一个魅力。非常非常感谢你。 代码呈现Checkall/uncheckall无用。我得知道这一点。 谢谢大家! – Kenny 2012-07-23 15:01:24

+0

我使用检查/取消选中功能更新了解决方案。 – GrayFox374 2012-07-23 15:36:27

+0

谢谢soooo @ GrayFox374;你是一个幸福! – Kenny 2012-07-23 15:53:55

0

那么我会去o假定该部分列是类型位?如果是的话,你可以使用GetBoolean(0)读者对象的方法,我不是太熟悉VB但C#相当于将sections.Checked = reader.GetBoolean(reader.GetOrdinal("section"));

希望这有助于

+0

字段名不是一个位数据类型。尽管感谢您的帮助。非常感激。 对我而言,这是最好的技术论坛之一。 – Kenny 2012-07-23 15:01:35