在数据网格中的复选框单击时使用 Databinder.Eval
using Databinder.Eval in onclick of checkbox in datagrid
<asp:DataGrid ID="dg" runat="server">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:CheckBox ID="cb" runat="server" onclick='myCheckChanged("<%#DataBinder.Eval(Container, "DataItem.myid")%>")' />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
这运行,但是当我单击浏览器中的复选框时,我收到js错误。 我尝试了单引号和双引号以及转义的所有组合,但我要么收到 js 错误,要么收到 .net"服务器标签格式不正确"错误。 我该怎么做?
如果你运行你的代码,它会显示你undefined
或什么都没有,所以有一些方法可以做到这一点,第一个也是最简单的,你应该改变你cb
如下:
<asp:CheckBox ID="cb" runat="server" onclick='<%# string.Format("myCheckChanged('"{0}'")", Eval("myid")) %>' />
第二种方法可以在code-behind
中ItemDataBound
像这样做:
1-将您的"数据网格"更改为:
<asp:DataGrid ID="dg" runat="server" OnItemDataBound="dg_ItemDataBound">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:CheckBox ID="cb" runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
2-在code-behind
实现dg_ItemDataBound
如下:
protected void dg_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
CheckBox ch = (CheckBox)e.Item.FindControl("cb");
ch.Attributes.Add("OnClick", string.Format("myCheckChanged({0});", e.Item.Cells[1].Text));
}
}
注意:在此代码段e.Item.Cells[1].Text
中,您必须知道myid
在哪个Cells
这两种方式工作正常。
想
出了一个办法,这是我所做的:
<asp:CheckBox ID="cb" runat="server" onclick=<%# "myCheckChanged('" + DataBinder.Eval(Container, "myid") + "') "%> />
相关文章:
- 递归使用 eval() 是检查程序执行的好方法吗?
- 为什么忽略了eval()代码中的语法错误
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval
- Javascript eval()无法处理传递的字符串
- 调用绕过eval()的函数
- Semi-sandboxing Javascript eval
- ES6 模板文字是否比 eval 更安全
- JavaScript 可以在这里使用 eval 吗?
- 如何使用uglifyjs/uglifyjs2解析walk和eval javascript表达式
- 如何使用其他地方指定的访问信息访问嵌套的json对象,而不使用eval或迭代
- 当eval只执行服务器端数据时,在javascript中使用eval是否安全
- 使用eval()定义变量显示未定义的错误
- javascript eval方法语法
- 在Javascript中使用eval的替代方案
- Eval vs execscript
- eval()读取函数参数有多糟糕
- 使用eval()设置全局变量
- 在数据网格中的复选框单击时使用 Databinder.Eval
- DataBinder.Eval返回的值被解释为变量而不是字符串
- 如何在asp.net按钮中使用DataBinder.Eval中继器's OnClient单击javascript