1

次のように Asp.Net CheckBoxList を設定しています。

        var objs = db.CoreObjectives.AsNoTracking().Where(n => n.Core_Target_ID == id && n.Current_Record == true);
        foreach (var o in objs)
        {
            ListItem item = new ListItem();
            item.Value = o.Core_Objectives_ID.ToString();
            item.Text = o.Objective;
            item.Selected = false;
            results.Add(item);
        }
        lstObjectivesCore.DataSource = results;
        lstObjectivesCore.DataBind();

item.Value 行でデバッグしましたが、o.Core_Objectives_ID は間違いなく整数です。しかし、後でこれを行うと:

        foreach (ListItem item in lstObjectivesCore.Items)
        {
            if (item.Selected)
            {
                int id = Convert.ToInt32(item.Value);
                // Other code omitted
            }
        }

item.Value は item.Text と同じで、文字列値、つまり「これは目標です」? 私は何か間違ったことをしていますか?

4

1 に答える 1

3

なぜデータバインドを使用するのですか? 私は Items.AddRange を使用します

これは私にとってはうまくいきました(追加のテストコードを使用)

    List<ListItem> result = new List<ListItem>();
    for (int i = 0; i < 10; i++)
    {
        result.Add(new ListItem("t" + i.ToString(), i.ToString()));
    }

    CheckBoxList1.Items.AddRange(result.ToArray());

    foreach (ListItem item in CheckBoxList1.Items)
    {
        if (item.Selected)
        {
            int id = Convert.ToInt32(item.Value);
            // Other code omitted
        }
    }
于 2013-10-18T11:24:31.490 に答える