在这种情况下,checkbox value = '1' 不起作用的是什么?

新手上路,请多包涵

我一直在阅读关于复选框的 stackoverflow 并将它们的值设置为 1 以使它们被选中,但它似乎不适用于我的情况。我有一个数据绑定器 eval 表达式,当我的复选框应该被选中时,它的计算结果为 1,并且我已经验证生成的页面至少有一个 value=1 的输入复选框没有显示为选中。

我错过了什么?我尝试只设置 checked 属性,但即使 checked=’ ‘ 也算作选中,所以无论如何我都看不到它对选中和未选中的复选框都有效。

这是似乎不起作用的html。

 <input type='checkbox' class="datacell" id='603'
style='text-align: center' value='1' />

这是我在中继器中为主要输入元素设置的数据绑定器

<input type='<%# Eval("InputType") %>' class="datacell"
id='<%# Eval("CellID") %>' style='<%# Eval("InputAlign") %>'
value='<%# Eval("TestResult") %>' />

其他评估只是确保正确的单元格是复选框,并且单元格的对齐方式以某种方式工作(复选框居中对齐,数字内容右对齐,其他内容左对齐。)

编辑:那么如何使用数据绑定表达式来做到这一点,这是我的难题。

原文由 Tony Peterson 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 439
2 个回答

根据 W3C 规范

复选框(和单选按钮)是可以由用户切换的开/关开关。当控制元素的 checked 属性被设置时,开关“打开”。

因此,为复选框属性设置 任何 值都会选中该复选框。

  • 检查=“检查”
  • 检查=“假”
  • 检查=“真
  • 检查

所有 复选框标记为已选中。您需要完全删除该属性以清除该复选框。

所以,一个可能的解决方案是:

 <input type='<%# Eval("InputType") %>' class="datacell"
id='<%# Eval("CellID") %>' style='<%# Eval("InputAlign") %>'
<%# isChecked((int)Eval("TestResult")) %> />

代码隐藏

protected string isChecked(int testResult) {
  if (testResult == 1) {
    return "checked='checked'";
  } else {
    return "";
  }
}

原文由 Chris Van Opstal 发布,翻译遵循 CC BY-SA 2.5 许可协议

将复选框设置为选中状态的正确方法是:

 <input type="checkbox" class="datacell" id="603"
style="text-align: center" checked="checked" />

呈现未选中复选框的正确方法是(请注意整个 checked 属性丢失):

 <input type="checkbox" class="datacell" id="603"
style="text-align: center"/>

原文由 Andrew Hare 发布,翻译遵循 CC BY-SA 2.5 许可协议

推荐问题