从Code Behind打开jQuery UI对话框

我是jQuery和JavaScript的新手,我遇到了一个问题。

我在Gridview中从ButtonField打开jQuery UI对话框时遇到一些问题:

 

起初我尝试给上面的一个类并将其命名为sliderPopupOpener,并在单击时打开jQuery Popup,如下所示:

 $(".sliderPopupOpener").click(function () { $("#sliderPopup").dialog("open"); }); 

然而,由于回发,这不起作用,除此之外,它也不适用于我的方法。 因为我想在显示jQuery UI对话框之前从数据库中获取一些数据。 所以我认为最好的方法是从Code Behind调用Dialog函数。

我怎样才能做到这一点?

我试过这种方法,但它不起作用,我不确定我做错了什么。

 if (e.CommandName == "modifyDeadline") { string sliderPopupFunction = @"  $(function () { jQuery(function () { $(""#sliderPopup"").dialog(""open""); } }); "; ClientScript.RegisterStartupScript(typeof(Page), "key", sliderPopupFunction); } 

以上可能吗? 如果是这样,我做错了什么?

编辑:

我注意到每个人都在解决这个问题,而不是通过从Code Behind调用jQuery函数来告诉我这是否可行。 虽然我很欣赏其他解决方案,但如果我能通过背后的代码尽可能少地工作,我将不胜感激,因为我已经准备好了这一切。

不应直接绑定click事件处理程序,而应使用live (自jquery 1.7以后弃用)或on来尝试委派事件。

那样,你应该改变这个:

 $(".sliderPopupOpener").click(function () { $("#sliderPopup").dialog("open"); }); 

进入这样的事情:

 $(body).on("click", ".sliderPopupOpener", function(){ $("#sliderPopup").dialog("open"); }); 

替代

如果代码隐藏方法更适合您,您应该尝试直接在脚本中调用该方法,即更改此:

 string sliderPopupFunction = @" "; 

简单地说:

 string sliderPopupFunction = @" "; 

此外,如果您的sliderPopup是服务器端控件,则应将#sliderPopup替换为ASP .NET生成的客户端ID(使用sliderPopup.ClientID )。

另一件需要考虑的事情是如果您的sliderPopup位于更新面板内,您应该首先尝试重新初始化Jquery UI对话框,如下所示:

 $("#sliderPopup").dialog().dialog("open"); 

只需用替换可以写任何你想要的东西:

      

我认为在这种情况下你最好使用普通的"); $.each(data,function(){ $table.append(""+this.MyProperty+"") }); $table.dialog(); } }); }); });