C# 从代码隐藏打开jQuery UI对话框

C# 从代码隐藏打开jQuery UI对话框,c#,javascript,jquery,asp.net,C#,Javascript,Jquery,Asp.net,我对jQuery和JavaScript有点陌生,我遇到了一个问题 从Gridview中的按钮字段打开jQuery UI对话框时遇到一些问题: <asp:ButtonField ButtonType="link" Text="Modify Deadline" Visible="true" runat="server" CommandName="modifyDeadline" ControlStyle-CssClass="button" ItemStyle-CssClass="sliderPo

我对jQuery和JavaScript有点陌生,我遇到了一个问题

从Gridview中的按钮字段打开jQuery UI对话框时遇到一些问题:

<asp:ButtonField ButtonType="link" Text="Modify Deadline" Visible="true" runat="server" CommandName="modifyDeadline" ControlStyle-CssClass="button" ItemStyle-CssClass="sliderPopupOpener"/>
然而,这不起作用,因为回发,除此之外,它也不适用于我的方法。因为我想在显示jQueryUI对话框之前从数据库中获取一些数据。所以我认为最好的方法是从代码后面调用Dialog函数

我该怎么做

我尝试过这种方法,但没有成功,我不确定我是否做错了什么

if (e.CommandName == "modifyDeadline")
{
     string sliderPopupFunction = @" <script type=""text/javascript""> 
                                        $(function () { 
                                            jQuery(function () {
                                                $(""#sliderPopup"").dialog(""open""); 
                                            }
                                         });
                                    </script>";
    ClientScript.RegisterStartupScript(typeof(Page), "key", sliderPopupFunction);
}
if(e.CommandName==“修改截止日期”)
{
字符串SliderPoupFunction=@”
$(函数(){
jQuery(函数(){
$(“#sliderpoup”)。对话框(“打开”);
}
});
";
RegisterStartupScript(typeof(Page),“key”,sliderPopupFunction);
}
以上是否可能?如果可能,我做错了什么

编辑:


我注意到每个人都在用一种方法来回答这个问题,而不是仅仅通过从代码隐藏中调用jQuery函数来告诉我这是否可行。尽管我很欣赏其他解决方案,但如果我能通过代码隐藏以尽可能少的努力使其工作,我将不胜感激,因为我已经准备好了一切这样。

我认为在这种情况下,最好使用普通的
我认为在这种情况下,最好使用普通的
只替换
只替换
而不是直接绑定
单击
事件处理程序,您应该尝试使用(自jquery 1.7以来已弃用)或

这样,您应该更改以下内容:

$(".sliderPopupOpener").click(function () {
    $("#sliderPopup").dialog("open");
});
string sliderPopupFunction = @" <script type=""text/javascript""> 
                                    $(function () { 
                                        jQuery(function () {
                                            $(""#sliderPopup"").dialog(""open""); 
                                        }
                                     });
                                </script>";
变成这样:

$(body).on("click", ".sliderPopupOpener", function(){
    $("#sliderPopup").dialog("open");
});
$("#sliderPopup").dialog().dialog("open");
可供替代的 如果代码隐藏方法更适合您,您应该尝试直接在脚本中调用该方法,即更改以下内容:

$(".sliderPopupOpener").click(function () {
    $("#sliderPopup").dialog("open");
});
string sliderPopupFunction = @" <script type=""text/javascript""> 
                                    $(function () { 
                                        jQuery(function () {
                                            $(""#sliderPopup"").dialog(""open""); 
                                        }
                                     });
                                </script>";

您不应该直接绑定
单击事件处理程序,而应该尝试使用(自jquery 1.7以来已弃用)或

这样,您应该更改以下内容:

$(".sliderPopupOpener").click(function () {
    $("#sliderPopup").dialog("open");
});
string sliderPopupFunction = @" <script type=""text/javascript""> 
                                    $(function () { 
                                        jQuery(function () {
                                            $(""#sliderPopup"").dialog(""open""); 
                                        }
                                     });
                                </script>";
变成这样:

$(body).on("click", ".sliderPopupOpener", function(){
    $("#sliderPopup").dialog("open");
});
$("#sliderPopup").dialog().dialog("open");
可供替代的 如果代码隐藏方法更适合您,您应该尝试直接在脚本中调用该方法,即更改以下内容:

$(".sliderPopupOpener").click(function () {
    $("#sliderPopup").dialog("open");
});
string sliderPopupFunction = @" <script type=""text/javascript""> 
                                    $(function () { 
                                        jQuery(function () {
                                            $(""#sliderPopup"").dialog(""open""); 
                                        }
                                     });
                                </script>";

我相信我无法在字段中插入。因为我已经尝试过了,因为我的功能在gridview之外运行得非常好。@Ryansamm但是可以,但是您需要使用asp模板。
谢谢,我不知道。我已经设法添加了它,它可以正常工作你说了。现在下一个挑战是如何通过AJAX获得我想要的数据。我想知道的是如何知道在哪一行按下了哪个按钮。从后面的代码中,我通常使用以下代码:int index=Convert.ToInt32(e.CommandArgument);但是如果我通过AJAX来实现,我需要做什么?@RyanSammut您可以使用jquery来获取行的索引。为您的普通输入按钮提供一个类。$(“.dostuff”)。单击(function(){var index=$(this.closest(“tr”).index();alert(index);});我相信我无法在字段中插入。因为我已经尝试过了,因为我的功能在gridview之外运行得非常好。@Ryansamm但是可以,但是您需要使用asp模板。
谢谢,我不知道。我已经设法添加了它,它可以工作了正如您所说。现在的下一个挑战是如何通过AJAX获取数据。我想知道的是如何知道在哪一行中按下了哪个按钮。从后面的代码中,我通常使用以下代码:int index=Convert.ToInt32(e.CommandArgument);但是如果我通过AJAX来实现,我需要做什么?@RyanSammut您可以使用jquery来获取行的索引。为您的普通输入按钮提供一个类。$(“.dostuff”)。单击(function(){var index=$(this.closest(“tr”).index();alert(index);});那么这是否可以从代码隐藏中调用,或者此更改与此无关?使用委派事件意味着您的事件处理程序应该跨回发工作,因此不需要代码隐藏。此外,我已更新了我的答案,以包括建议的代码隐藏方法修复。感谢您的解释,现在一切都有意义:)话虽如此,我还是更喜欢“替代”方法,因为我用这种方法把所有东西都准备好了,但它不起作用。这是我在代码隐藏中的代码:string sliderPopupFunction=@“$”(“sliderPopup”)。dialog(“open”);ClientScript.RegisterStartupScript(页面类型),“键”,sliderPopupFunction);您的
sliderPopup
是服务器端控件吗?如果是,我已经更新了答案,以包含这种可能性。sliderPopup是一个div:它包含一个jQuery UI滑块、一些标签和两个Buton。然后是否可以从后面的代码调用它,或者此更改与此无关?使用委派事件意味着您的事件处理程序应该工作一段时间交叉回发,因此不需要代码隐藏。此外,我已经更新了我的答案,以包括建议的代码隐藏方法修复。感谢您的解释,现在一切都有意义:)尽管如此,我仍然更喜欢“替代”方法,因为我已经以这种方式准备好了所有内容,但它不起作用。这是我在代码隐藏中的代码:string sliderPopupFunction=@“$”(“sliderPopup”).dialog(“open”);RegisterStartupScript(typeof(Page),“key”,sliderP