Как вызвать метод UpdatePanel1.Update () с другой страницы в ASP.NET - PullRequest
0 голосов
/ 05 ноября 2011

У меня есть Default.aspx с несколькими элементами управления наряду с элементом управления Uploadify Image, и я вызываю другой файл UploadImages.aspx Файл для загрузки изображения с помощью jQuery, я загружаю изображения с использованием общего кода C # и сохраняю детали изображения в базе данных.

HTML-код для Default.aspx PAGE

<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, но я не знаю, как зарегистрировать элемент управления updatePanel1 на странице UploadImage.aspx.

Пожалуйста, помогите мне с этим Моя основная задача - показать изображение после загрузки без обновления страницы

Пример страницы по ссылке удалён, так как я заработал её из соображений безопасности

Ответы [ 3 ]

0 голосов
/ 06 ноября 2011

Попробуйте использовать событие uploadify onAllComplete, чтобы обновить панель обновлений из кода на стороне клиента.Для этого добавьте на страницу кнопку, добавьте AsyncPostbackHandler для этой кнопки в коллекцию триггеров панели обновления и нажмите эту кнопку программным способом при загрузке обработчика события 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>
0 голосов
/ 06 ноября 2011

Я работал с небольшими изменениями, внесенными в ваш Код @ Юрий Рожовецкий , так как по какой-то причине он не работал. Кредит идет на @ Юрий Рожовецкий , поэтому я отмечу его ответ как правильный, ниже работает и проверенная версия.

<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> 
0 голосов
/ 05 ноября 2011

UpdatePanel в ASP.NET WebForms можно использовать только для обновления частей страницы, на которой вы находитесь, путем обработки того же самого файла aspx, из которого вы пришли.Поэтому UpdatePanel в Default.aspx всегда будет возвращаться к Default.aspx.Он вообще не может получить выходные данные другой страницы, такой как UploadImage.aspx.

Вы можете обойти эту проблему, изменив UploadImage.aspx на usercontrol и добавив его в панель обновлений по умолчанию.Страница aspx.

...