ASP.NET:根据查询中的ID列表设置多个CheckBox.Checked

时间:2013-08-19 14:13:31

标签: c# asp.net

我正在尝试根据CheckBox ID列表设置多个复选框进行检查。 这是一个例子:

<asp:CheckBox ID="TS_Deviation" runat="server" />

背后的代码

int i = clist.Count -1;
do
{
    clist[i].Checked = true;
    i--;
} while (clist != null && i >= 0);

该列表包含要设置为选中的CheckBox ID。 例如,clist[0]将以纯文本格式包含"TS_Deviation"。 我试图通过列表设置值的原因是因为列表来自linq查询,该查询将每个复选框的ID拉入需要设置为checked = true的ID。 我的问题是我不知道如何使用clist [i]作为复选框ID来设置它来检查。

3 个答案:

答案 0 :(得分:1)

如果您的列表包含“明文”中的ID,我假设您的意思是ID字符串?

如果是这样,您需要致电Control.FindControl( ... )以获取基于其ID的实际复选框。请注意,这不是递归函数,因此它只能找到直接子控件。如果您的复选框位于容器内,即:

<asp:Panel ID="CheckboxContainer" runat="server"> .... checkboxes .... </asp:Panel>

然后你会打电话:

var check = CheckboxContainer.FindControl( clist[i] ) as CheckBox;

获取复选框。如果将返回一个控件,那么您需要先将其强制转换为CheckBox,然后才能调用.Checked属性。

答案 1 :(得分:0)

你能让linq查询选择实际的Checkbox对象并在其上设置属性吗?

如果没有,您可以使用您拥有的ID在页面上查找控件。

Page.FindControl(clist[i]);

答案 2 :(得分:-1)

查看Find Control method

int i = clist.Count -1;
do
{    
    CheckBox cb= (CheckBox)Page.FindControl.Find(clist[0], true);     
    cb.Checked = true;
    i--;
} while (clist != null && i >= 0);

编辑:抱歉,修正了网络表单。