2012-07-23 129 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