0

我有一个记录列表,我使用中继器在屏幕上显示。其中一列包含一个复选框“已联系”。我已经设置了一些要检查的记录,而有些则没有。(在数据库中)......但是当页面加载时,所有记录都被检查......有人知道为什么吗?

<input type="checkbox" name="chkBox"
 checked='<%# SetCheckboxValue((bool)Eval("Contacted"))%>' />

“已联系”是后面代码中设置的布尔值,具体取决于是否检查记录(来自数据库)

protected string SetCheckboxValue(bool Contacted)
    {
        if (Contacted)
        {
            return "checked";
        }

        return String.Empty;
    }

SetCheckboxValue 获取 T 或 F 并应返回“已选中”或“”然后应用程序应将每个记录显示为已选中或为空..但正如我所说的所有记录都显示为已选中?

有什么想法吗?谢谢

4

2 回答 2

6

因为属性checked是布尔属性,不一定需要值。

它的存在或不存在表示复选框是否被选中。

将您的标记更改为:

<input type="checkbox" name="chkBox" <%# SetCheckboxValue((bool)Eval("Contacted"))%> />

注意:为了符合 X/HTML,您应该将属性标记生成为:checked="checked"但对于 HTML,更简单checked就足够了。

protected string SetCheckboxValue(bool Contacted)
{
    if (Contacted)
    {
        return "checked=\"checked\"";
    }

    return String.Empty;
}
于 2013-03-11T16:14:01.763 回答
4

checkedin 值不是必需的,完全是可选的。

<input type='checkbox' checked /> 

<input type='checkbox' checked='checked' /> 

<input type='checkbox' checked='' /> 

您需要checked完全删除该属性才能取消选中该复选框。

于 2013-03-11T16:15:20.367 回答