JQuery DIalog和ASP.NET中继器

前端之家收集整理的这篇文章主要介绍了JQuery DIalog和ASP.NET中继器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个ASP.NET转发器,显示一个删除LinkBut​​ton的项目列表.

我想设置删除LinkBut​​tons显示一个JQuery对话框进行确认.如果点击“确定”按钮,我想做回发.

显而易见的问题是,中继器中的每个LinkBut​​ton都将拥有自己的ID,而我不想复制对话框的所有javascript.

建议?

解决方法

解决方案不是那么简单.按下jQuery UI对话框的Ok按钮后,您必须能够调用原来的回调函数.

首先需要一个通用的js函数显示对话框:

function showConfirmRequest(callBackFunction,title,content) 
{
    $("#divConfirm").html(content).dialog({
        autoOpen: true,modal: true,title: title,draggable: true,resizable: false,close: function(event,ui) { $(this).dialog("destroy"); },buttons: { 
            'Ok': function() { callBackFunction(); },'Cancel': function() {
                $(this).dialog("destroy");
            }
        },overlay: { 
            opacity: 0.45,background: "black" 
        } 
    });
}

我想像一个div的存在

<div id="divConfirm"></div>

在c#代码背后你必须注册以前的客户端函数,将原始的asp.net callbackFunction作为参数传递给我(I generalized):

protected void AddConfirmRequest(WebControl control,string title,string message) 
{
    string postBackReference = Page.ClientScript.GetPostBackEventReference(control,String.Empty);
    string function = String.Format("javascript:showConfirmRequest(function() {{ {0} }},'{1}','{2}'); return false;",postBackReference,message);
    control.Attributes.Add("onclick",function);
}

通过GetPostBackEventReference方法,您可以检索asp.net分配给控件的回发函数.

现在,在Repeater ItemDataBound上,检索执行删除的控件并将其传递给此函数

<asp:Repeater ID="repeater" runat="server" OnItemDataBound="repeater_OnItemDataBound">
    ...
    <ItemTemplate>
        ...
        <asp:Button ID="btnDelete" runat="server" Text="Delete" />
        ...
    </ItemTemplate>
</asp:Repeater>

代码

protected void repeater_OnItemDataBound(object sender,RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        WebControl btnDelete = ((WebControl)e.Item.FindControl("btnDelete"));
        AddConfirmRequest(btnDelete,"Confirm delete","Are you sure? Really???");
    }
}

我希望这有帮助.

猜你在找的jQuery相关文章