c# - 服务器标记格式不正确。(databinder.eval)

标签 c# asp.net

我正在尝试使用以下代码。

 <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 即可执行您想要执行的操作(更改背景颜色)。你的 CheckBox 应该看起来像这样(我添加了 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 Selectors

OnCheckedChanged -- 您将在后台代码中处理的事件,而不是在 JavaScript 中。

关于c# - 服务器标记格式不正确。(databinder.eval),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14993565/

相关文章:

asp.net - 成功调用ajax后ng-repeat不绑定(bind)

c# - 在 c# WinForm 中的按钮或拆分按钮上添加上下文菜单

c# - 在 ASP.NET MVC3 中正确使用 TempData?

c# - 如何将 ObservableCollection<LineSeries> 绑定(bind)到图表

asp.net - Fiddler 不可见 asp.net mvc 应用程序之间的 HTTP 流量

c# - 授权(角色 = "Admin")总是返回拒绝访问

c# - ServiceStack Redis Mq认证

c# - 为什么 Path.GetDirectoryName 函数必须依赖于 260 个字符的限制

c# - 如何将 Colgroup 标记添加到 ASP :Datagrid Control?

asp.net - “检测到 Autofac 循环组件依赖性”错误