我正在使用数据绑定中继器组件,里面有一些点击敏感的面板。
<ItemTemplate>
<asp:Panel ID="PanelContent" runat="server">
<asp:Panel ID="PanelMenuTitle" runat="server"
ondblclick="EditMenu(<%# Eval("ID") %>)">
如您所见,我想将当前数据项的ID传递给名为EditMenu()的javascript函数。
但是,由于“服务器标签格式不正确”,此代码会中断。我也尝试了我能想到的一切:使用<%=
而不是<%#
,Bind()
代替Eval()
,而不是“没有成功。”
答案 0 :(得分:1)
在ondblclick函数周围使用单引号。那应该解决它。见下文。
ondblclick='EditMenu(<%# Eval("ID") %>)'
我的第二个建议是使用另一个控件,如ListView或DataList,以便您可以分配数据键来保存ID。然后你可以像这样在ItemDataBound事件中分配ondblclick事件。
protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
Panel pnlCtrl = (Panel)e.Item.FindControl("Panel1");
if (pnlCtrl != null)
{
pnlCtrl.Attributes["ondblclick"] = String.Format("EditMenu({0})", ListView1.DataKeys[((ListViewDataItem)e.Item).DisplayIndex]["ID"]);
}
}
}
答案 1 :(得分:0)
好吧,我明白了。不是最初的方法,但最终它是我想要的:
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Panel pnlCtrl = (Panel)e.Item.FindControl("PanelMenuTitle");
if (pnlCtrl != null)
{
myMenu menu = (e.Item.DataItem as myMenu);
pnlCtrl.Attributes["ondblclick"] = String.Format("EditMenu('{0}')", menu.ID);
}
}