ASP.NET AJAX проблемы при использовании UserControls - PullRequest
0 голосов
/ 24 февраля 2009

У меня есть UserControl под названием TenantList.ascx, который содержит слегка измененный GridView из DevExpress (Web.ASPxGridView). Этот элемент управления делает обратные вызовы, не вызывая обратную передачу, которая именно то, что мне нужно. Конкретное событие, на которое мне нужно отреагировать, - CustomButtonClicked. Я сделал свое событие OnCustomButtonClicked для usercontrol TenantList.ascx, которое срабатывает при возникновении события GridView CustomButtonClicked.

У меня есть обработчик событий на странице, где я использую UC. Когда я отлаживаю с использованием VS, я вижу, что попадаю в обработчик событий, как и положено. Мой Eventhandler выглядит так:

    protected void uc_TenantList_CustomButtonCallback(object sender, ASPxGridViewCustomButtonCallbackEventArgs e)
    {
        Tenant tenant = (Tenant)uc_TenantList.GetGridView().GetRow(e.VisibleIndex);

        switch (e.ButtonID)
        {
            case "btn_show":
                ShowRow(tenant);
                break;
            case "btn_edit":
                EditRow(tenant);
                break;
            case "btn_delete":
                DeleteRow(tenant.Id);
                break;
            default:
                break;
        } 
    }

    private void EditRow(Tenant tenant)
    {
        uc_TenantDetails.SetTenantData(cBLL.GetTenant(tenant.Id));
        UpdatePanel1.Update();
    }

Функция EditRow вызывается, а пользовательский элемент управления TenantDetails.ascx корректно заполняется данными. Однако UpdatePanel1.Update (); не обновляет панель, где находится мой TenantDetails UserControl.

Однако, если я вызываю UpdatePanel1.Update (); из обычного элемента управления, зарегистрированного в ScriptManager, он просто обновляется.

        protected void Button1_Click(object sender, EventArgs e)
        {
            uc_TenantDetails.SetTenantData(cBLL.GetTenant(17));
            UpdatePanel1.Update();
        }

Это работает без проблем ... Я застрял на 100% и понятия не имею, в чем может быть проблема.

Любые предложения приветствуются !!

Приветствие Настоящий Напстер - В настоящей беде:)

Ответы [ 2 ]

1 голос
/ 05 марта 2009

Хорошо, решил эту проблему

Что мне нужно было сделать, это включить обратную передачу в элементе управления gridview внутри моего usercontrol. Затем поместите пользовательский контроль Gridview в панель обновления и сохраните пользовательский контроль сведений в другой панели обновления.

Таким образом, все получилось. Хотя решение не впечатлило. Выглядит немного некрасиво.

0 голосов
/ 24 февраля 2009

Убедитесь, что ваша панель обновлений настроена на постоянное обновление (не условно). Вы также можете найти информацию в этой статье полезной:

http://www.asp.net/AJAX/Documentation/Live/overview/PartialPageRenderingOverview.aspx http://msdn.microsoft.com/en-us/library/system.web.ui.updatepanel.update.aspx

Первая ссылка даст вам некоторую историю о частичном рендеринге страниц, вторая даст вам больше информации о методе обновления.

Из документации, вызывающей UpdatePanel.Update, будет вызвана повторная визуализация панели обновления на клиенте после вызова, но только если для UpdatePanel задано Условное обновление. Если установлено постоянное обновление, должно появиться сообщение об ошибке.

Если ваша панель обновлений настроена на постоянное обновление, может ли она быть вложена в другую UpdatePanel, для которой режим обновления установлен как условный?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...