gpt4 book ai didi

c# - JQuery 对话框未从 C# 打开

转载 作者:行者123 更新时间:2023-11-30 18:30:57 25 4
gpt4 key购买 nike

我在从 C# 代码隐藏打开 JQuery 对话框时遇到问题。它在我做的其他页面上有效,但在这个页面上不起作用。我已经试过了 this , this , thisthis .但我遗漏了一些东西。

基本上,左边有一个带有 GridView 的表格,右边有一个带有图像按钮的计数器。我想要做的是向用户显示一个对话框,以确认他是否想在单击停止按钮 (btnZerar) 时重置计数器。

我在#StopDialogConfirm 下了一个断点,它只在页面加载时到达,但在单击按钮时不会到达。没有 javascript 错误。

按照我的代码示例:

ASPX:

<asp:Content ID="scriptsHeader" ContentPlaceHolderID="FeaturedContent" runat="server">
<script type="text/javascript" src="/Scripts/Pages/EstudeCiclos.js"></script>
<script type="text/javascript" src="/Scripts/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="/Scripts/jquery-ui-1.8.20.min.js"></script>
</asp:Content>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<asp:UpdatePanel ID="updPanelEstudeCiclos" UpdateMode="Conditional" runat="server"> <ContentTemplate>
...
<div>
<asp:ImageButton ID="btnPlay" runat="server" OnClick="btnPlayClick" ImageUrl="~/Images/play.jpg" Height="40px" Width="40px" AlternateText="Começar a contar o tempo" />
<asp:ImageButton ID="btnPause" runat="server" OnClick="btnPauseClick" ImageUrl="~/Images/pause.jpg" Height="40px" Width="40px" AlternateText="Parar tempo" />
<asp:ImageButton ID="btnZerar" runat="server" OnClick="btnZerarClick" ImageUrl="~/Images/stop.jpg" Height="40px" Width="40px" AlternateText="Zerar tempo" />
<asp:ImageButton ID="btnSalvar" runat="server" OnClick="btnSalvarClick" ImageUrl="~/Images/save.jpg" Height="40px" Width="40px" AlternateText="Salvar tempo" />
</div>
...
<div>
<asp:Button ID="btnStop" runat="server" OnClick="btnStop_Click" Style="display: none;" ClientIDMode="Static" />
</div>
</ContentTemplate> </asp:UpdatePanel>

CodeBehind - 注释掉的代码是我尝试过的东西。当我尝试打开警报时,它起作用了。

    private void OpenQuestionDialog(string functionName, string question)
{
string s = "$(function(){$('#" + functionName + "').dialog('open').text('" + question + "');});";

//ScriptManager.RegisterStartupScript(Page, this.GetType(), "Dialog", s, true);

ScriptManager requestSM = ScriptManager.GetCurrent(this);
if (requestSM != null && requestSM.IsInAsyncPostBack)
{
ScriptManager.RegisterClientScriptBlock(this,
typeof(Page),
Guid.NewGuid().ToString(),
s,
true);
}
else
{
ClientScript.RegisterClientScriptBlock(typeof(Page),
Guid.NewGuid().ToString(),
s,
true);
}
}


protected void btnZerarClick(object sender, EventArgs e)
{
OpenQuestionDialog("StopDialogConfirm", "Are you sure you want to reset the counter?");
}

脚本(EstudeCiclos.js):

$(function () {
$('#StopDialogConfirm').dialog({
autoOpen: false,
width: 450,
modal: true,
buttons: {
"Não": function ()
{
$(this).dialog("close");
},
"Sim": function ()
{
$(this).dialog("close");
$('#btnStop').click();
}
}
});
});

请帮忙!谢谢!

最佳答案

可能的问题是由 RegisterClientScriptBlock 生成的脚本添加在页面的开头,因此可能是未加载或初始化适当的 jQuery 库。

有一些可能的尝试:

  1. 使用 RegisterStartupScript相反,因为它是在页面加载后执行的。如果在窗口 onload 方法中初始化 jquery,这仍然可能不起作用。

  2. 将要执行的方法添加到 window.onload 或内部 pageLoad 方法中,而不是直接在页面中。

  3. (我的偏好)将按钮执行代码更改为完全客户端。如果您只是打开一个弹出窗口并且不需要页面中的任何内容,则没有理由执行完整的回发。

关于c# - JQuery 对话框未从 C# 打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20818154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com