Позвольте мне перейти к преследованию.Мой сценарий выглядит следующим образом: у меня есть пользовательские добавленные поля для фильтрации RadGrid, и фильтрация работает отлично.Проблема возникает, когда я хочу редактировать запись, используя EditForm внутри RadGrid.Раньше все работало нормально, но потом у меня возникли проблемы с выбором правильной строки (я всегда выбирал неправильную строку), так что это то, что я сделал, чтобы это исправить.например:
Я использовал сессию, которая поможет нам позже определить, был ли отфильтрован источник данных 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, который имеет его всякий раз, когда я пытаюсь нажать кнопку «Изменить» в RadGrid, я получаю следующее сообщение: «Невозможно отменить регистрацию UpdatePanel с идентификатором« UpdatePanel4 », поскольку он не был зарегистрирован в ScriptManager.Это может произойти, если UpdatePanel был удален из дерева элементов управления и позже добавлен снова, что не поддерживается. Имя параметра: updatePanel "
Что я хотел бы знать, так это как это исправить.
С уважением,
Hrvoje