![](/img/trans.png)
[英]how to pass two variable as single string to javascript function in Repeater : using 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
上的code-behind
執行此操作,如下所示:
1-將您的“ DataGrid”更改為:
<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") + "') "%> />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.