-1

我需要使用'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;
               }

        }}
4

1 回答 1

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();
            }
        }
于 2013-05-15T09:38:04.787 回答