Выполнение метода кода программной части vb.net после завершения загрузки Plupload

Наткнулся на очередной блокпост. Прямо сейчас у меня есть страница, содержащая Plupload и повторитель, который в основном извлекает все загруженные изображения из базы данных. Эта страница загружается динамически в colorbox.

Мне нужно, чтобы повторитель обновлялся при загрузке новых изображений в базу данных. Я делаю это, просто вызывая Repeater и связывая его с данными (Repeater1.Databind()). Я почти уверен, что решение лежит в Ajax, но я осмотрелся и даже использовал их для вызова веб-службы, но как выполнить код позади метода?

Код метода, который я хочу выполнить:

Public Sub reBind()
    Dim dt2 As DataTable = blOrgLogo.getOrgLogo(userId, False).Tables(0)
    If (dt2 Is Nothing) Or (dt2.Rows.Count = 0) Then
        ' Nothing is returned
    Else
        repLogoCollection.DataSource = dt2
        repLogoCollection.DataBind()
    End If
End Sub

В одном из примеров, которые я видел в Интернете, говорится, что это можно сделать с помощью PageMethods, но я не могу заставить его работать с вышеупомянутым методом.

Я не могу использовать элемент управления ASP.Net Ajax Timer, так как он просто не работает, когда страница загружается через colorbox. (Если у кого-то есть решение для этого, было бы здорово, так как это упростило бы все, ха-ха)

Еще одна часть информации, которая, я не уверен, может быть полезной, заключается в том, что повторитель привязан к page_load.

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    userId = Session("UserID")
    Dim dt As DataTable = blOrgLogo.getOrgLogo(userId, False).Tables(0)

    If (Not IsPostBack) Then
        If (dt Is Nothing) Or (dt.Rows.Count = 0) Then
            ' Nothing is returned
        Else
            Repeater1.DataSource = dt
            Repeater1.DataBind()
        End If
    End If
End Sub

javascript для загрузки:

// Client side form validation
$('#uploader').submit(function (e) {
    var uploader = $('#uploader').pluploadQueue();

    // Validate number of uploaded files
    if (uploader.total.uploaded == 0) {
        // Files in queue upload them first
        if (uploader.files.length > 0) {
            // When all files are uploaded submit form
            uploader.bind('UploadProgress', function () {
                if (uploader.total.uploaded == uploader.files.length)
                    $('form').submit();
            });

            uploader.start();


        } else
            alert('You must at least upload one file.');

        e.preventDefault();
    }
});

person Sayid Hafiz    schedule 08.07.2012    source источник
comment
Почему вы не перезагружаете страницу после загрузки? Кажется довольно сложным, что вы делаете для простой задачи,   -  person Piotr Kula    schedule 11.07.2012
comment
Страница находится в цветовом поле, поэтому я хотел сделать это таким образом. Но, скорее всего, я брошу колорбокс   -  person Sayid Hafiz    schedule 12.07.2012
comment
Хорошо, это не iframe или что-то в цветовом поле? если это так, перезагрузите iframe. :)   -  person Piotr Kula    schedule 12.07.2012


Ответы (1)


Вам нужно будет использовать

  $.ajax({
            type: "POST",
//Location to the webservice or the webmethod
            url: "Services/Service.asmx/reBind",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(data) {
            //on success     
            },
            error: function(ex) {
           //on error            
            }
        });

И выше вашего метода добавьте [WebMethod(true)], вам может понадобиться найти эквивалент vb.net, поскольку это то, что я использовал для С#.

Что касается вызова ajax, я не уверен, что вам нужен код в веб-службе. Я почти уверен, что даже если он находится в классе, он будет работать, возможно, вам придется попробовать оба.

person HELP_ME    schedule 16.07.2012