C# 如何在没有客户端事件的情况下从ASP.NET代码隐藏调用jQuery UI对话框?
我试图根据超出特定范围的值,而不是基于按钮单击或其他客户端事件,从C#ASP.NET代码打开jQuery UI对话框。下面是创建对话框的Javascript函数(位于.aspx页面顶部):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')。删除(); }, 按钮: { “
//总超出范围对话框
函数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