Веб-формы, AJAX, BackgroundWorker - PullRequest
       21

Веб-формы, AJAX, BackgroundWorker

0 голосов
/ 04 сентября 2018

Я не могу заставить свой BackgroundWorker обновить мой интерфейс. Я посмотрел на этого бывшего. как-делать-я-бежать-а-простой-бит-в-кода-в-новом-нить Когда я запускаю код, он не обновляет мой ярлык lblSuccess.Text с 10%, 20% и т. Д. Но когда он сделан на 100%, он обновляет ярлык lblSuccess.Text с помощью Finished.

Когда я отлаживаю код, он попадает в "lblSuccess.Text = string.Format (" {0}% Completed ", args.ProgressPercentage);" каждый раз, так что похоже, что все работает нормально, но значение не отправляется во внешний интерфейс.

Мой код выглядит так: AJAX:

 function GetCustomers() {
    SetHiddenGetCustomer();

    var formData = new FormData();

    var hiddenMediaName = $("#hiddenMediaName").val();
    var hiddenGetCustomers = $("#hiddenGetCustomers").val();

    formData.append("hiddenMediaName", hiddenMediaName);
    formData.append("hiddenGetCustomers", hiddenGetCustomers);

    $('#loadingmessage').show();
    $.ajax({
        type: 'post',
        url: 'ajax/Suppliers_Media_Edit.aspx',
        data: formData,
        dataType: 'html',
        contentType: false,
        processData: false,
        success: function (data) {
            $('#loadingmessage').hide();
            $('#datatable_fixed_column').html(jQuery(data).find('#datatable_fixed_column').html());
            $('#lblSuccess').html(jQuery(data).find('#lblSuccess').html());
            $('#lblError').html(jQuery(data).find('#lblError').html());

            if (jQuery(data).find('#lblSuccess').html() !== "") {
                $('#SuccessForm').show();
            } else {
                $('#ErrorForm').show();
            }
        },
        error: function (data) {
            $('#loadingmessage').hide();

            $('#lblError').html(jQuery(data).find('#lblError').html());

            $('#ErrorForm').show();
        }
    });
}

C # код:

protected void Page_Load(object sender, EventArgs e)
    {
        Boolean parsedValue;
        var hiddenSubmit = Request.Form["hiddenSubmit"];
        var hiddenLoadPage = Request.Form["hiddenLoadPage"];
        var hiddenSubmitForAllCustomers = Request.Form["hiddenSubmitForAllCustomers"];
        var hiddenGetCustomers = Request.Form["hiddenGetCustomers"];

        if (Boolean.TryParse(hiddenGetCustomers, out parsedValue))
        {
            if (parsedValue)
            {
                LoadCustomers(sender, e);
            }
        }
    }
private void LoadCustomers(object sender, EventArgs e)
        {
            var id = Request.Form["hiddenMediaName"];
            var customersToAdd = new List<Mindworking.DirectoryManagementV2.BusinessObjects.Customer>();


            BackgroundWorker bw = new BackgroundWorker();

            // this allows our worker to report progress during work
            bw.WorkerReportsProgress = true;
            bw.RunWorkerAsync();

            // what to do in the background thread
            bw.DoWork += new DoWorkEventHandler(
                delegate(object o, DoWorkEventArgs args)
                {
                    BackgroundWorker b = o as BackgroundWorker;

                    // do some simple processing for 10 seconds
                    for (int i = 1; i <= 10; i++)
                    {
                        // report the progress in percent
                        b.ReportProgress(i * 10);
                        Thread.Sleep(1000);
                    }

                });

            // what to do when progress changed (update the progress bar for example)
            bw.ProgressChanged += new ProgressChangedEventHandler(
                delegate(object o, ProgressChangedEventArgs args)
                {
                    lblSuccess.Text = string.Format("{0}% Completed", args.ProgressPercentage);
                });

            // what to do when worker completes its task (notify the user)
            bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(
                delegate(object o, RunWorkerCompletedEventArgs args) { lblSuccess.Text = "Finished!"; });

            bw.RunWorkerAsync();
}

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

...