DataBind不生成控件?

时间:2013-04-11 18:15:32

标签: c# asp.net

我有CheckBox列表,我需要添加属性,但我注意到,当我迭代控件时,没有...

    var listType = SettingsManager.Get("CRMCaseTypes");
    var listStatus = SettingsManager.Get("CRMStatusReasons");

    var listTypeItems = ParseSettingList(listType);
    var listStatusItems = ParseSettingList(listStatus);

    cblCRMType.DataSource = listTypeItems;
    cblCRMType.DataBind();
    cblCRMStatus.DataSource = listStatusItems;
    cblCRMStatus.DataBind();

    int index = 0;
    foreach (Control c in cblCRMStatus.Controls)
    {
        CheckBox cb = c as CheckBox;
        if (cb != null)
        {
            cb.Attributes.Add("id", listStatusItems[index].Value);

            if (cb.Attributes["id"] == "5")
            {
                cb.Checked = true;
                cb.Enabled = false;
            }
        }

        index++;
    }

    index = 0;
    foreach (Control c in cblCRMType.Controls)
    {
        CheckBox cb = c as CheckBox;
        if (cb != null)
        {
            cb.Attributes.Add("id", listTypeItems[index].Value);
        }

        index++;
    }

}

有没有办法强制生成复选框?

由于

1 个答案:

答案 0 :(得分:1)

当您在DataBind()上致电CheckBoxList时,会填充其Items集合,而非其Controls集合。

foreach (ListItem item in cblCRMStatus.Items)
{
    if (item.Value == "5")
    {
        item.Selected = true;
        item.Enabled = false;
    }
}

item.Attributes属性允许您向复选框添加其他属性。但是,您无法设置id属性; ASP.NET自动将其设置为递增整数。