-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 に答える