«Невозможно отменить регистрацию UpdatePanel с идентификатором 'xxx', поскольку он не был зарегистрирован в ScriptManager…» в RadGrid при редактировании записи

Позвольте мне перейти к делу. Мой сценарий выглядит следующим образом: у меня есть настраиваемые поля для фильтрации RadGrid, и фильтрация работает отлично. Проблема возникает, когда я хочу отредактировать запись с помощью EditForm внутри RadGrid. Раньше он работал нормально, но затем у меня возникли проблемы с выбором правильной строки (я всегда выбирал неправильную строку), поэтому я сделал это, чтобы исправить это.

Итак, моя RadGrid с фильтрами выглядит так:

enter image description here

Я использовал сеанс, который поможет нам позже определить, был ли инициирован отфильтрованный источник данных RadGrid или он был источником по умолчанию.

protected void btnSearch_Click(object sender, EventArgs e)
{
    Session["SearchKontakti"] = "1";
}

После этого мне пришлось настроить PreRender с помощью цикла if, чтобы проверить ранее упомянутый сеанс.

protected void gvKontakti_PreRender(object sender, EventArgs e)
{
    int idKontakt = Convert.ToInt32(Request.QueryString["idk"]);

    if (Session["SearchKontakti"] == "1")
    {
        var kontakti = from k in db.Kontakt
                       select k;

        int idTipUsera = Convert.ToInt32(rcbTipUsera.SelectedValue);
        int idTvrtka = Convert.ToInt32(rcbTvrtka.SelectedValue);

        if (rcbTvrtka.SelectedValue != "0")
        {
            kontakti = kontakti.Where(k => k.idFirma == idTvrtka);
        }

        if (rcbTipUsera.SelectedValue != "0")
        {
            kontakti = kontakti.Where(k => k.idOvlasti == idTipUsera);
        }

        if (chkAktivan.Checked == true)
        {
            kontakti = kontakti.Where(k => k.Aktivan == true);
        }
        else
        {
            kontakti = kontakti.Where(k => k.Aktivan == false);
        }

        int idAuthKontakt = Convert.ToInt32(Session["authenticatedUI"]);

        if (idKontakt > 0 && idAuthKontakt == idKontakt)
        {
            gvKontakti.DataSource = from k in kontakti
                                    where k.idKontakt == idKontakt
                                    orderby k.Prezime, k.Ime
                                    select new { Tvrtka = k.Firma.Naziv, k.idKontakt, Naziv = k.Ime + " " + k.Prezime, Funkcija = k.Funkcija, k.Ime, k.Prezime, k.Tel1, k.Tel2, k.Mob1, k.Mob2, k.Email1, k.Email2, k.Fax, k.Adresa1, k.Adresa2, k.Adresa3, k.Grad, k.PostanskiBroj, k.Drzava, k.Biljeske, k.Aktivan, k.Username, k.Password };
        }
        else if (idKontakt > 0 && idAuthKontakt != idKontakt)
        {
            gvKontakti.DataSource = from k in kontakti
                                    where k.idKontakt == idKontakt
                                    orderby k.Prezime, k.Ime
                                    select new { Tvrtka = k.Firma.Naziv, k.idKontakt, Naziv = k.Ime + " " + k.Prezime, Funkcija = k.Funkcija, k.Ime, k.Prezime, k.Tel1, k.Tel2, k.Mob1, k.Mob2, k.Email1, k.Email2, k.Fax, k.Adresa1, k.Adresa2, k.Adresa3, k.Grad, k.PostanskiBroj, k.Drzava, k.Biljeske, k.Aktivan, k.Username, k.Password };
        }
        else
        {
            gvKontakti.DataSource = from k in kontakti
                                    orderby k.Prezime, k.Ime
                                    select new { Tvrtka = k.Firma.Naziv, k.idKontakt, Naziv = k.Ime + " " + k.Prezime, Funkcija = k.Funkcija, k.Ime, k.Prezime, k.Tel1, k.Tel2, k.Mob1, k.Mob2, k.Email1, k.Email2, k.Fax, k.Adresa1, k.Adresa2, k.Adresa3, k.Grad, k.PostanskiBroj, k.Drzava, k.Biljeske, k.Aktivan, k.Username, k.Password };
        }

        gvKontakti.DataBind();
    }
}

Итак, это решило мою основную проблему, но дало мне еще одну. Некоторые из моих UserControls содержат UpdatePanel, и для каждого UserControl, который имеет его, всякий раз, когда я пытаюсь щелкнуть кнопку Edit в RadGrid, я получаю следующее сообщение: «Невозможно отменить регистрацию UpdatePanel с идентификатором UpdatePanel4, поскольку он не был зарегистрирован в ScriptManager. Это могло произойти, если UpdatePanel был удален из дерева элементов управления, а затем снова добавлен, что не поддерживается. Имя параметра: updatePanel "

Я бы хотел знать, как это исправить.

С уважением,

Хрвое

12
задан wegelagerer 4 January 2012 в 13:26
поделиться