-1

我正在尝试根据 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 查询,该查询会提取每个需要设置为checked = true. 我的问题是我不知道如何使用 clist[i] 作为复选框 ID 将其设置为选中。

4

3 回答 3

1

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

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

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

然后你会打电话:

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

获取复选框。If 将返回一个控件,因此您需要将其强制转换CheckBox为才能调用该.Checked属性。

于 2013-08-19T14:21:31.447 回答
0

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

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

Page.FindControl(clist[i]);
于 2013-08-19T14:21:11.577 回答
-1

看一下Find Control 方法

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

编辑:对不起,为网络表单修复。

于 2013-08-19T14:21:46.357 回答