添加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

回到顶部