и в коде C #: защищенный void BtnUpMove_Click (отправитель объекта, EventArgs e) {int SelectedIndex = lstSLA.SelectedIndex;

у показать JQuery UI Dialog от Codebehind и нужно обновить его после постбэков.

Диалог является элементом управления для фильтрации и поиска данных. Таким образом, пользователь выбирает из DropDownLists и вводит текст в TextBoxes, нажимает «Apply-Button», происходит асинхронная обратная передача, данные фильтруются в соответствии с выбором пользователя, и результат будет отображаться в GridView. Поэтому мне нужно обновить панель обновления вокруг GridView.

Асинхронная обратная передача работает с помощью следующих ссылок:

Диалог jQuery UI с обратной передачей кнопки ASP.NEThttp://blog.roonga.com.au/2009/07/using-jquery-ui-dialog-with-aspnet-and.html

(В основномdlg.parent().appendTo(jQuery("form:first"));-Решение)

проблема: Я не могу обновить UpdatePanel ни с UpdateMode = "Always", ни вручную из codebehind через UpdatePanel.Update (). Я предполагаю, что это как-то связано с тем, что диалог не находится внутри UpdatePanel или что-то подобное. Надеюсь, кто-нибудь может мне помочь.

Какой-то источник:

function createChargeFilterDialog() {
    //setup dialog
    $('#Dialog_ChargeFilter').dialog({
        modal: true,
        resizable: false,
        autoOpen: false,
        draggable: true,
        hide: "Drop",
        width: 850,
        height: 600,
        position: "center",
        title: "Charge-Filter",
        buttons: {
            "Close": function () {
                $(this).dialog("close");
            }
        },
        open: function (type, data) {
            $(this).parent().appendTo(jQuery("form:first"))
        },
        close: function (type, data) {
        }
    });
}

Он вызывается из codebehind, когда BtnShowDialog (вне jQuery-Dialog) нажимается через

AjaxControlToolkit.ToolkitScriptManager.RegisterStartupScript _
            (Me.Page, GetType(Page), "showChargeFilterDialog", "createChargeFilterDialog();$('#Dialog_ChargeFilter').dialog('open');", True)

ОбновитьЯ также заметил проблему в значениях обратной передачи. Все текстовые поля, если они пустые или нет, имеют запятую. Это указывает на то, что элементы управления отображаются несколько раз в соответствии с:http://www.componentart.com/community/forums/t/60999.aspx

Я уверен, что оба вопроса связаны между собой. Весь диалог со всеми его элементами управления будет воссоздан при каждой асинхронной обратной передаче, следовательно, все имена элементов управления существуют несколько раз в DOM (вызывая проблему с добавлением запятой в ViewState). Элементы управления видны только в панели инструментов FireBug / IE Deveoper, а не в HTML-источнике, поэтому я предполагаю, что jQuery вызывает эти проблемы. Как я могурасполагать диалог или как я могупредотвратить отдых(проверить, если он уже существует) диалога? Это потому, что диалог находится внутри UpdatePanel или потому что он перемещен (через Javascript) за пределы UpdatePanel?

Уничтожение диалога перед асинхронной обратной передачей не решит проблему, потому что диалог просто исчезнет:

<asp:Button ID="BtnApplyFilter" OnClientClick="$('#Dialog_ChargeFilter').dialog('destroy');" ... />

Ваша помощь очень ценится.

Решение: я закончил с использованиемModalPopupExtender из AjaxControlToolkit. После некоторых небольших проблем он работает как шарм с асинхронными обратными вызовами (не забудьте позвонитьMPE.Show() в каждой функции кода, если вы хотите, чтобы всплывающее окно оставалось видимым). Я мог бы добавить больше кода, если кто-то заинтересован.

Ответы на вопрос(4)

Ваш ответ на вопрос