Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET用户控件和jQuery对话框_Asp.net_Jquery_User Controls_Dialog - Fatal编程技术网

ASP.NET用户控件和jQuery对话框

ASP.NET用户控件和jQuery对话框,asp.net,jquery,user-controls,dialog,Asp.net,Jquery,User Controls,Dialog,在我的页面上,我获得了以下用户控件: <div class="editFormDialog" style="display: none; font-size: 12px;"> <mm:Form ID="editUC" ShowCreateButton="false" ShowEditButton="true" runat="server" /> </div> 我不希望它在按下按钮时打开(这不是ASP.NET按钮,纯HTML): 对话框打开,但UC不包

在我的页面上,我获得了以下用户控件:

<div class="editFormDialog" style="display: none; font-size: 12px;">
    <mm:Form ID="editUC" ShowCreateButton="false" ShowEditButton="true" runat="server" />
</div>
我不希望它在按下按钮时打开(这不是ASP.NET按钮,纯HTML):

对话框打开,但UC不包含正确的数据。 加载页面时,UC将使用默认数据进行更新。然后用户单击一个按钮,数据会更改,但UC不会更新。它仍然包含默认数据。这就是问题所在

你知道为什么吗


非常感谢您的帮助

当您“调用属性”(我假设您的意思是它是一种方法)时,会发生什么?页面是否执行回发?如果是这样的话,那么当您将jQuery混合到场景中时,回发可能会以某种方式被阻止?

既然您使用的是更新面板,那么如何在页面中注入对javascript的调用呢?我这样问是因为只有一种方法可以在部分回发上正常工作:ScriptManager.RegisterStartupScript()。这使得javascript代码可以像加载页面一样运行。当然,也可以调用任何其他onload javascript,这可能会导致您看到的行为

所以

  • 确保您的javascript已注入脚本管理器
  • 确保只执行您想要执行的javascript部分 部分回发后 执行

  • 还可以使用web服务在ajax控件中打开UC来更改数据源。没有更多的部分回发,这通常会提高页面的响应能力。

    我找到了解决这个问题的方法。事实证明,当您附加到表单时,需要确保这段代码在jquery文档中已准备就绪:

    $("#dialog1").parent().appendTo($("form:first"));
    
    所以整个事情应该是这样的:

    jQuery(document).ready(function() {
        $("#<%=myFamilyGrid.ClientID %>").tablesorter({
            sortList: [[0, 1]]
        })
             .tablesorterPager({ container: $("#pager") });
    
    
        $("#dialog1").dialog({
            modal: true,
            height: 370,
            width: "350px",
            autoOpen: false,
            bgiframe: false,
            zIndex: 3999
        });
    
        $("#dialog1").parent().appendTo($("form:first"));
    });
    
    jQuery(文档).ready(函数(){
    $(“#”)表排序器({
    排序列表:[[0,1]]
    })
    .tablesorterPager({container:$(“#pager”)});
    $(“#对话框1”)。对话框({
    莫代尔:是的,
    身高:370,
    宽度:“350px”,
    自动打开:错误,
    bgiframe:false,
    zIndex:3999
    });
    $(“#dialog1”).parent().appendTo($(“form:first”);
    });
    

    希望这有帮助

    我点击一个按钮获取下一个数据。发生回发。UC中的属性设置为“editUC.EditData=ds;”。页面将显示新数据。现在,当我单击另一个按钮使对话框弹出时,UC仍然包含默认数据。就像它没有在数据源中注册更改一样。但是如果我在对话框外显示UC,它会工作得很好。这听起来确实很奇怪:你能发布更多的源代码吗?它们都放在更新面板中。当我创建对话框时,它是否会“移到”更新面板之外?也许另一个解决方案是每次打开对话框时创建它,然后在关闭对话框时删除它?当然,将html元素放置在正确的位置。但是我该怎么做呢?好吧,有了jQuery和ASP.NETAjax这样的游戏,我一定会尽量简化一些事情,以便找到答案。很抱歉,我帮不了你更多的忙有没有办法用jQuery AJAX取代ASP.NET AJAX?有这方面的文章吗?
    $("#dialog1").parent().appendTo($("form:first"));
    
    jQuery(document).ready(function() {
        $("#<%=myFamilyGrid.ClientID %>").tablesorter({
            sortList: [[0, 1]]
        })
             .tablesorterPager({ container: $("#pager") });
    
    
        $("#dialog1").dialog({
            modal: true,
            height: 370,
            width: "350px",
            autoOpen: false,
            bgiframe: false,
            zIndex: 3999
        });
    
        $("#dialog1").parent().appendTo($("form:first"));
    });