C# 如何在没有客户端事件的情况下从ASP.NET代码隐藏调用jQuery UI对话框?

C# 如何在没有客户端事件的情况下从ASP.NET代码隐藏调用jQuery UI对话框?,c#,asp.net,jquery-ui-dialog,C#,Asp.net,Jquery Ui Dialog,我试图根据超出特定范围的值,而不是基于按钮单击或其他客户端事件,从C#ASP.NET代码打开jQuery UI对话框。下面是创建对话框的Javascript函数(位于.aspx页面顶部): //总超出范围对话框 函数ShowRangeDialog(){ $('#rangeDialog')。对话框({ 莫代尔:是的, 宽度:“自动”, 可调整大小:false, 可拖动:错误, 关闭:功能(事件、用户界面){ $('body')。查找('rangeDialog')。删除(); }, 按钮: { “

我试图根据超出特定范围的值,而不是基于按钮单击或其他客户端事件,从C#ASP.NET代码打开jQuery UI对话框。下面是创建对话框的Javascript函数(位于.aspx页面顶部):


//总超出范围对话框
函数ShowRangeDialog(){
$('#rangeDialog')。对话框({
莫代尔:是的,
宽度:“自动”,
可调整大小:false,
可拖动:错误,
关闭:功能(事件、用户界面){
$('body')。查找('rangeDialog')。删除();
},
按钮:
{
“确定”:函数(){
$(this.dialog('close');
}
}
});
}
下面是对话框div本身(位于.aspx页面底部):



您的行项目总数超出了所选审批级别允许的范围。
请检查批准范围并调整行项目或数量。

下面是试图显示对话框的C#代码的后面部分:

if (currTotal < lowerLim || currTotal > upperLim)
{
  //Show jQuery dialog telling user that their line items total is out of range
  Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "dlgOutOfRange",
    "ShowRangeDialog();", true);
}
if(currTotalupperLim)
{
//显示jQuery对话框,告诉用户其行项目总数超出范围
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),“dlgOutOfRange”,
“ShowRangeDialog();”,true);
}
如果我在调试器中单步执行
if
块中的代码,则会到达并执行该代码,但不会显示对话框。我错过了什么?

试试这个

if (currTotal < lowerLim || currTotal > upperLim)
{
  //Show jQuery dialog telling user that their line items total is out of range
  Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "dlgOutOfRange",
    "ShowRangeDialog();", true);
}
if(currTotalupperLim)
{
//显示jQuery对话框,告诉用户其行项目总数超出范围
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),“dlgOutOfRange”,
“ShowRangeDialog();”,true);
}
您应该只调用函数名

此外,您可能希望尝试startupscript而不是registerclientscriptblock。您必须确保在定义函数之后而不是之前添加脚本

if (currTotal < lowerLim || currTotal > upperLim)
{
  //Show jQuery dialog telling user that their line items total is out of range
  Page.ClientScript.RegisterStartupScript(this.GetType(), "dlgOutOfRange",
    "ShowRangeDialog();", true);
}
if(currTotalupperLim)
{
//显示jQuery对话框,告诉用户其行项目总数超出范围
Page.ClientScript.RegisterStartupScript(this.GetType(),“dlgOutOfRange”,
“ShowRangeDialog();”,true);
}
试试这个

if (currTotal < lowerLim || currTotal > upperLim)
{
  //Show jQuery dialog telling user that their line items total is out of range
  Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "dlgOutOfRange",
    "ShowRangeDialog();", true);
}
if(currTotalupperLim)
{
//显示jQuery对话框,告诉用户其行项目总数超出范围
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),“dlgOutOfRange”,
“ShowRangeDialog();”,true);
}
您应该只调用函数名

此外,您可能希望尝试startupscript而不是registerclientscriptblock。您必须确保在定义函数之后而不是之前添加脚本

if (currTotal < lowerLim || currTotal > upperLim)
{
  //Show jQuery dialog telling user that their line items total is out of range
  Page.ClientScript.RegisterStartupScript(this.GetType(), "dlgOutOfRange",
    "ShowRangeDialog();", true);
}
if(currTotalupperLim)
{
//显示jQuery对话框,告诉用户其行项目总数超出范围
Page.ClientScript.RegisterStartupScript(this.GetType(),“dlgOutOfRange”,
“ShowRangeDialog();”,true);
}

根据在中找到的问题/答案,我稍微修改了我的函数,现在它可以工作了。以下是修改后的函数:

<script type="text/javascript">
  //Total out of range dialog
  function ShowRangeDialog() {
    $(function() {
      $('#rangeDialog').dialog({
        modal: true,
        width: 'auto',
        resizable: false,
        draggable: false,
        close: function (event, ui) { $('body').find('#rangeDialog').remove(); },
        buttons: { 'OK': function () { $(this).dialog('close'); }
        }
      })
    }).dialog("open");
  }
</script>

//总超出范围对话框
函数ShowRangeDialog(){
$(函数(){
$('#rangeDialog')。对话框({
莫代尔:是的,
宽度:“自动”,
可调整大小:false,
可拖动:错误,
关闭:函数(事件,ui){$('body')。查找('rangeDialog')。删除();},
按钮:{'OK':函数(){$(this).dialog('close');}
}
})
}).对话框(“打开”);
}

根据在中找到的问题/答案,我稍微修改了我的函数,现在它可以工作了。以下是修改后的函数:

<script type="text/javascript">
  //Total out of range dialog
  function ShowRangeDialog() {
    $(function() {
      $('#rangeDialog').dialog({
        modal: true,
        width: 'auto',
        resizable: false,
        draggable: false,
        close: function (event, ui) { $('body').find('#rangeDialog').remove(); },
        buttons: { 'OK': function () { $(this).dialog('close'); }
        }
      })
    }).dialog("open");
  }
</script>

//总超出范围对话框
函数ShowRangeDialog(){
$(函数(){
$('#rangeDialog')。对话框({
莫代尔:是的,
宽度:“自动”,
可调整大小:false,
可拖动:错误,
关闭:函数(事件,ui){$('body')。查找('rangeDialog')。删除();},
按钮:{'OK':函数(){$(this).dialog('close');}
}
})
}).对话框(“打开”);
}

这和我之前做的不一样吗,只是告诉ASP.NET呈现“”标记,而不是自己做?不管怎样,我用RegisterClientScriptBlock和RegisterStartupScript都试过了,但没有什么不同。你检查过javascript在生成的源代码中呈现的位置了吗?正如我所提到的,它必须在函数定义之后呈现。大2是1)调用太早,2)函数中存在语法错误。为了测试#2,我只需调用$(document)ready(function(){showrangelialog();})上的函数;如果在documentready上调用它时它没有启动,那么实际函数中就有问题了。不是callI看到的生成源代码的函数,它肯定是在我的函数之后插入的。当我把它放在
$(document.ready(function(){})
中时,对话框立即弹出。所以我不知道还能从这里尝试什么。是的,这很奇怪。试着做一个简单的警报语句,看看是否有效。这和我之前做的不一样吗,只是告诉ASP.NET呈现“”标记,而不是自己做?不管怎样,我用RegisterClientScriptBlock和RegisterStartupScript都试过了,但没有什么不同。你检查过javascript在生成的源代码中呈现的位置了吗?正如我所提到的,它必须在函数定义之后呈现。大2是1)调用太早,2)函数中存在语法错误。为了测试#2,我只需调用$(document)ready(function(){showrangelialog();})上的函数;如果在documentready上调用它时它没有启动,那么实际函数中就有问题了。不是callI看到的生成源代码的函数,而且它肯定得到了inserte