在Repeater中引用复选框

时间:2012-01-17 15:58:09

标签: c# asp.net repeater

我有一个Repeater控件,可以创建动态数量的CheckBoxList控件,每个列表都有一组不同的ListItems

我已经完成了这部分,但我遇到的问题是如何保存这些动态创建的框的已检查状态。我无法了解如何获取这些CheckBoxList控件的列表。

这是我正在尝试做的一些伪代码:

foreach (Item i in MyRepeater)
{
    if (i.ItemType is CheckBoxList)
    {
        foreach (ListItem x in i)
        {
            update table set tiChecked = x.Checked
            where table.id = i.id and table.typeid = x.id
        }
    }
}

我有与CheckBoxList的ID以及与数据库中的ID相对应的ListItem

修改

当然,在我问之后,我发现了。这似乎让我得到了我想要的东西

foreach (RepeaterItem tmp in rptReportList.Items)
{
    if (tmp.ItemType == ListItemType.Item)
    {
        foreach (Control c in tmp.Controls)
        {
            if (c is CheckBoxList)
            {
                DisplayMessage(this, c.ID.ToString());
            }
        }
    }
}

1 个答案:

答案 0 :(得分:3)

您需要深入了解RepeaterItem

// repeater item
foreach (Control cr in MyRepeater.Controls)
{
    // controls within repeater item
    foreach (Control c in cr.Controls)
    {
        CheckBoxList chklst = c as CheckBoxList;
        if (chklst != null)
        {
            foreach (ListItem i in chklst.Items)
            {
                string valueToUpdate = i.Value;
                string textToUpdate = i.Text;
                bool checkedToUpdate = i.Selected;

                // Do update
            }
        }
    }
}