我正在尝试使用以下代码。
<asp:DataGrid ID="Grid" runat="server" DataKeyField="KeyID" CssClass="grid"
...
<asp:CheckBox runat="server" ID="checkBox-<%#DataBinder.Eval(Container.DataItem,"KeyID")%>" AutoPostBack="false"></asp:CheckBox>
当我运行代码时,出现以下错误:
Error 25 The server tag is not well formed.
注意:这无需 runat="server" 即可工作。
解决这个问题的办法是什么?
您不需要设置 CheckBox 的 ID 来执行您想要执行的操作(更改背景颜色)。你的复选框应该看起来像这样(我添加了KeyID
作为文本值,如果你想显示它......或者你可以删除它,如果你只想要复选框):
<asp:CheckBox runat="server" ID="checkbox" Text='<%# Eval("KeyID") %>' AutoPostBack="false"></asp:CheckBox>
现在你的复选框将呈现如下内容:
<input id="MainContent_Grid_checkbox_0" type="checkbox" name="ctl00$MainContent$Grid$ctl02$checkbox" /><label for="MainContent_Grid_checkbox_0">Value of KeyID</label>
由于所有名称都以“checkbox”结尾,因此您可以对名称以“checkbox”结尾的元素的更改事件应用函数。您没有指定这是一个 JavaScript 问题,或者您是否正在使用 jQuery...这个答案使用jQuery:
<script>
$('input[name$="checkbox"]').change(function () {
if ($(this).is(':checked')) {
$(this).parent().css('background-color', 'yellow');
}
else {
$(this).parent().css('background-color', 'white');
}
});
</script>
这将确定该复选框是否被选中,如果是,它将设置其父级的背景颜色(<td>
它位于 DataGrid 呈现的 HTML 中),具体取决于值。
同样,您可以转到下一个parent()
并突出显示整行。
资源:jQuery 选择器
选中更改时-- 您将在后面的代码中处理的事件,而不是在 JavaScript 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)