【问题标题】:How to call UpdatePanel1.Update() method from another page in ASP.NET如何从 ASP.NET 中的另一个页面调用 UpdatePanel.Update() 方法
【发布时间】:2011-11-05 09:43:52
【问题描述】:

我有 Default.aspx 和几个控件以及 Uploadify 图像上传控件,我调用另一个文件 UploadImages.aspx 文件来使用 jQuery 上传图像,我使用通用 C# 代码上传图像并将图像详细信息也保存在数据库中。

Default.aspx PAGE 上的 HTML 代码

<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="False"  UpdateMode="Conditional">
   <ContentTemplate>                                 
        <asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1" RepeatDirection="Horizontal" >
            <ItemTemplate>
                <br /><img src='http://test.kashmirsouq.com/ImageUploads/<%# Eval("ImageID") %>' width="100px" height="100px"   vspace="2" hspace="2" border="1" />
                <br /><asp:LinkButton ID="lnkBtnDeleteImage" CommandArgument='<%# Eval("sno") %>' CommandName="Delete" runat="server">
         Delete</asp:LinkButton>
        <br />
            </ItemTemplate>
        </asp:DataList>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:SQLConnectionString %>" 
            SelectCommand="SELECT [sno], [ImageID] FROM [User_Images]">
        </asp:SqlDataSource>
 </ContentTemplate>
</asp:UpdatePanel> 

我想用UpdatePanel1.Update()方法来刷新UpdatePanel1,但是我不知道如何在UploadImage.aspx页面注册updatePanel1控件。

请帮我解决这个问题 我的基本目标是在上传图片后显示图片而不刷新页面

出于安全原因,我已将链接上的页面示例删除

【问题讨论】:

    标签: asp.net c#-4.0 jquery partial-page-refresh updatepanel


    【解决方案1】:

    尝试使用uploadify 的onAllComplete 事件从客户端代码刷新您的更新面板。为此,添加到页面按钮,将此按钮的 AsyncPostbackHandler 添加到 updatepanel 的触发器集合并在 uploadify onAllComplete 事件处理程序中以编程方式点击此按钮:

    $('#fuFiles').uploadify({
        onAllComplete: function (event, data) { $("#<%= HiddenButton.ClientID %>").click(); return true; },
        uploader: 'Scripts/uploadify.swf',
        script: 'FileUploads.aspx',
        cancelImg: 'Scripts/cancel.png',
        auto: 'true',
        multi: 'true',
        buttonText: 'Browse...',
        queueSizeLimit: 5,
        simUploadLimit: 2
    });
    
    
    <asp:Button runat="server" ID="HiddenButton" Style="display: none;" />
    
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="HiddenButton" />
                </Triggers>
    

    【讨论】:

    • 似乎是一个很好的解决方案,我试过了,但是当我使用你的 jQuery 时它没有显示“浏览..”按钮,我在 FF 和 IE 中都试过了。我的浏览按钮位于
      TAGS 内。知道为什么浏览按钮没有出现。
    【解决方案2】:

    ASP.NET WebForms 中的UpdatePanel 只能用于通过处理您来自的同一个aspx 文件来刷新您所在页面的部分内容。因此,Default.aspx 中的 UpdatePanel 将始终返回到 Default.aspx。它根本无法获取像 UploadImage.aspx 这样的另一个页面的输出。

    您可以通过将 UploadImage.aspx 更改为用户控件来解决此问题,并将其包含在 Default.aspx 页面上的更新面板中。

    【讨论】:

    • 谢谢,让我试试这个选项
    • 当我使用 jQuery 调用 Uploadfile.aspx 时,我不确定如何做到这一点,请告诉我code in backticks
    • @Student:在没有更新面板的情况下,你有没有把事情做好?
    【解决方案3】:

    我对您的代码@Yuriy Rozhovetskiy进行了一些小改动,但由于某种原因它无法正常工作。感谢@Yuriy Rozhovetskiy,所以我会将他的答案标记为正确,以下是工作和测试版本。

    <script type="text/javascript">
        $(document).ready(function () {
            $('#fuFiles').uploadify({
                //'onAllComplete': function (event, data) { $("#<%= HiddenButton.ClientID %>").click(); return true; },
                'uploader': 'Scripts/uploadify.swf',
                'script': 'FileUploads.aspx',
                'cancelImg': 'Scripts/cancel.png',
                'auto': 'true',
                'multi': 'true',
                'fileExt': '*.jpg;*.gif;*.png',
                'buttonText': 'Browse...',
                'queueSizeLimit': 5,
                'simUploadLimit': 2,
                'onAllComplete': function (event, data) 
                {
                    $("#<%= HiddenButton.ClientID %>").click();
                    return true; 
                }
            });
        });
    </script>
    

            <asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1" RepeatDirection="Horizontal" >
                <ItemTemplate>
                    <br /><img src='http://test.kashmirsouq.com/ImageUploads/<%# Eval("ImageID") %>' width="100px" height="100px"   vspace="2" hspace="2" border="1" />
                    <br /><asp:LinkButton ID="lnkBtnDeleteImage" CommandArgument='<%# Eval("sno") %>' CommandName="Delete" runat="server">
             Delete</asp:LinkButton>
            <br />
                </ItemTemplate>
            </asp:DataList>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:SQLConnectionString %>" 
                SelectCommand="SELECT [sno], [ImageID] FROM [User_Images]">
            </asp:SqlDataSource>
     </ContentTemplate>
    </asp:UpdatePanel> 
    <asp:Button runat="server" ID="HiddenButton"  Style="display: none;" onclick="HiddenButton_Click" />
    
       <div id="fuFiles"></div> 
    

    【讨论】:

      猜你喜欢
      • 2015-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      • 2011-08-22
      相关资源
      最近更新 更多