0

以前に選択したアイテムを無効化またはチェックしたい。選択したアイテムは userid_checkbox iteams.i としてデータベースに保存されました。ユーザーが選択したアイテムを取得する必要があります。ユーザー ID が 10 で、選択した項目が 2 の場合、データベース 10_2 に保存されます。だから私はそれを分割して2番目のアイテム番号を取得し、ループを使用して選択したアイテムを無効にする必要があります。私は以下のように書いた

        int user_id = Convert.ToInt16(Session["user_id"]);
        ward w = new ward();
        using (DataClassesDataContext db = new DataClassesDataContext())
        {
            List<string> bednum = (from j in db.wards where w.user_id == user_id select j.wbedno).ToList();
             foreach (var bed in bednum)
             {
                 string vals = bed.Split('_')[1];
                 cbList = (CheckBoxList)pnlControls.FindControl(vals);
                 //  cbList.Items.Add(new ListItem(vals));


                 var query = from listItem in cbList.Items.Cast<ListItem>()
                             //   join item in bednum  on
                             where listItem.Value == bed
                             select listItem;

                 //   var query =  from l  in cbList.Items
                 foreach (ListItem listItem in query)
                     listItem.Selected = true;

             }
        }
4

1 に答える 1

0

コードを次のように変更します。

int user_id = Convert.ToInt16(Session["user_id"]);
CheckBoxList cbList = (CheckBoxList)pnlControls.FindControl("MyCheckBoxListID");
ward w = new ward();//Guessing ward is a class?

using (DataClassesDataContext db = new DataClassesDataContext())
{
    List<string> bednum = (from j in db.wards where w.user_id == user_id select j.wbedno).ToList();
    foreach (var bed in bednum)
    {
        string vals = bed.Split('_')[1];
        ListItem listItem = cbList.Items.FindByValue(vals);
        if (listItem != null) listItem.Selected = true;
    }
}
于 2013-08-30T00:17:04.577 に答える