添加JavaScript到链接的OnClientClick属性,同时结合一个中继
我试图得到这个工作,但没有成功:添加JavaScript到链接的OnClientClick属性,同时结合一个中继
<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="btnDeleteFamily_Click"> <HeaderTemplate>
<table>
<tr>
<th width="90" valign="top"><%=getTag("name")%></th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("chrname")%></td>
<asp:LinkButton ID="btnDeleteFamily" CssClass="fRight ui-icon ui-icon-trash" runat="server" CommandName="delete" CommandArgument='<%#Eval("idmember")%>' OnClientClick='return confirm("<%= getTag("deletefamilymemberdialog") %>")' Text="" ValidationGroup="delete_family" />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
当在btnDeleteFamily的OnClientClick点击确认对话框不显示。
getTag(在后面的代码中的方法)用于本地化以根据语言获取文本。我的目的是要显示的JavaScript对话框中该消息,但我发现:
<a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$rptFamily$ctl01$btnDeleteFamily','')" class="fRight ui-icon ui-icon-trash" id="ctl00_ContentPlaceHolder1_rptFamily_ctl01_btnDeleteFamily" onclick='return confirm("<%= getTag("deletefamilymemberdialog") %>");'/>
,所以它不是在服务器端处理getTag否则我会得到
onclick='return confirm("Are you sure that you want to delete this entry?");'
感谢
回答:
我觉得写邮件页面的JavaScript变量是一个更好的解决方案:
<script> var deleteMemberDialogMessage = '<%= getTag("deletefamilymemberdialog") %>';
</script>
和你转发:
<asp:LinkButton ID="btnDeleteFamily" CssClass="fRight ui-icon ui-icon-trash" runat="server" CommandName="delete" CommandArgument='<%#Eval("idmember")%>'
OnClientClick='return confirm(deleteMemberDialogMessage)' Text=""
ValidationGroup="delete_family" />
顺便说确保您的deletefamilymemberdialog消息不有单引号。
编辑:如果你想从你的数据源的值绑定到你的中继器,你应该绑定的列来控制的,而不是的Response.Write(<%=)这样的:
<asp:LinkButton ID="btnDeleteFamily" CssClass="fRight ui-icon ui-icon-trash" runat="server" CommandName="delete" CommandArgument='<%#Eval("idmember")%>'
OnClientClick='<%# Bind("return confirm('{0}');'", "YourColumnName") %> Text=""
ValidationGroup="delete_family" />
回答:
至少对我来说似乎没问题。
您可以在Firefox中试用它,并使用WebDeveloper工具栏或Firebug扩展,您将能够获得有关场景背后发生的更多信息。
也许在页面上有其他错误,不允许此代码工作。
回答:
protected void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e) {
LinkButton lb = e.Item.FindControl("btnDelete") as LinkButton;
if (lb != mull) {
lb.OnClientClick = "whatever";
}
}
回答:
如果您想在确认模式下使用jQuery对话框绑定到更新面板中的中继器上的链接按钮,并且您要在确认之后执行的代码对于每一行都不相同,则可以按照以下方式进行设置:
添加JavaScript函数到您的网页/控制是这样的:
function confirm(buttonFunctionForPostBack) {
$("#dialog").dialog('option', 'buttons', {
"Cancel": function() {
$(this).dialog("close");
},
"Delete Payment": function() {
eval(buttonFunctionForPostBack);
$(this).dialog("close");
}
}
).dialog('open');
}
而且在后面的代码:
public void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) {
LinkButton lb = e.Item.FindControl("deleteButton") as LinkButton;
if (lb != null)
{
lb.OnClientClick = "confirm(\"" + this.Page.ClientScript.GetPostBackEventReference(lb, string.Empty) + "\");return false;";
}
}
而在你的aspx页面:
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound"> <HeaderTemplate>
<table>
<tr>
<th width="90" valign="top"></th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("name")%></td>
<td><asp:LinkButton ID="deleteButton" runat="server" CommandName="delete" CommandArgument='<%#Eval("id")%>' Text="Delete" />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
这让你拿在创建对话框之后,您可以设置对话框的“按钮”选项这一事实的优势。而且,它不需要任何额外的脚本变量。
以上是 添加JavaScript到链接的OnClientClick属性,同时结合一个中继 的全部内容, 来源链接: utcz.com/qa/263326.html