如何在C#中使用for循环遍历复选框?

时间:2013-05-15 09:20:39

标签: asp.net c#-4.0

我需要使用'for'循环来检查是否勾选了复选框值。

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

        }}

1 个答案:

答案 0 :(得分:1)

让您的生活更轻松,并使用复选框列表创建复选框: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属性告诉元素,您实际上需要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();
            }
        }