我正在尝试根据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来设置它来检查。
答案 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)
int i = clist.Count -1;
do
{
CheckBox cb= (CheckBox)Page.FindControl.Find(clist[0], true);
cb.Checked = true;
i--;
} while (clist != null && i >= 0);
编辑:抱歉,修正了网络表单。