2013-05-15 65 views
-1

我需要檢查複選框的值是否用'for'循環打勾。如何通過複選框在C#中使用forlopp來迭代?

CheckBox chkBox = (CheckBox)tab_patients.Controls[chk + i]; 

來自搜索我得到了這一行。這是什麼tab_patients表示`

string chk = "CheckBox"; 
    for (int i = 1; i < 13; i++) 
    { 
     for (int k = 1; k < 4; k++) 
     { 
      // CheckBox chkBox = (CheckBox)tab_patients.Controls[chk + i]; 
      CheckBox cb = (CheckBox)this.Page.Form.FindControl("chk"+i.ToString()); 

      if(cb.Checked==true) 

      { 
       check = i + "0" + k; 
       } 

     }} 
+0

你有這個複選框嗎? –

+0

爲什麼你不使用複選框列表? – Serge

+0

.aspx中創建的複選框頁面 – nsds

回答

1

讓你的生活更輕鬆,創建checkboxlists複選框:?http://msdn.microsoft.com/de-de/library/system.web.ui.webcontrols.checkboxlist.aspx

<asp:CheckBoxList ID="SomeElement" runat="server" 
            AutoPostBack="true" 
            RepeatColumns="4" 
            EnableViewState="true"> 
</asp:CheckBoxList> 

隨着你告訴該元素的RepeatColumns屬性,您INFACT要4列,所以控件會將你的32個元素分開4並將這些複選框分組爲8個。

在此之後,您可以遍歷每個列表,如下所示:

foreach(var cb in checkboxlistID) 
{ 
    if(cb.Checked) 
    { 
    //do something 
    } 
} 

最重要的是,以下是一些舊代碼,向您展示如何使用從SQL查詢獲取的數據填充複選框列表。您可以忽略if表達式,該表達式檢查是否有緩存的數據,從中填充所有複選框。

using (OleDbConnection connection = new OleDbConnection(ConfigurationManager.ConnectionStrings["database"].ConnectionString)) 
     { 
      string Query = @"SELECT * from level"; 
      OleDbCommand command = new OleDbCommand(Query, connection); 
      if (Session["SavedLevelItems"] != null) 
       { 
        CheckBoxListLevel.Items.Clear(); 
        List<ListItem> SessionList = (List<ListItem>)Session["SavedLevelItems"]; 
        foreach (var item in SessionList) 
        { 
         try 
         { 
          CheckBoxListLevel.Items.Add(item); 
         } 
         catch { } 

        } 
       } 
      else 
      { 
       connection.Open(); 
       CheckBoxListLevel.DataTextField = "bez_level"; 
       CheckBoxListLevel.DataValueField = "id_level"; 
       OleDbDataReader ListReader = command.ExecuteReader(); 
       CheckBoxListLevel.DataSource = ListReader; 
       CheckBoxListLevel.DataBind(); 
       ListReader.Close(); ListReader.Dispose(); 
      } 
     } 
+0

但我該如何安排此複選框列表。 ??我有32個複選框。在表中的每一行只有4個應該有..即在4 * 8的方式..因此,我不在這裏使用checkboxlists – nsds

+0

我已經擴展我的代碼,以反映你需要4列 – Marco