Member 3864348 Ответов: 3

Проблема обновления данных в ASP.NET gridview


Привет я столкнулся с проблемой обновления данных в asp.net.
На домашней странице при нажатии на ссылку загружается другая страница, имеющая элемент управления gridview.Этот gridview отображает данные из xml-файла и имеет в нем параметры редактирования/обновления.
Когда значение любой ячейки редактируется и обновляется, новое значение отображается в gridview, а также успешно записывается обратно в xml в задней части.Но проблема заключается в том, что при повторном нажатии на ссылку в сеточном представлении отображаются старые данные, а не обновленные.

Кто-нибудь, пожалуйста, может мне помочь.

Что я уже пробовал:

1.я попытался использовать EnableRowsCache="false"в файле aspx,но это не помогло.
2. попробовал приведенный ниже код ,но он вызывает исключение при нажатии кнопки редактирования в gridview
protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        MyGridView.DataBind();
    }
}

Karthik_Mahalingam

назначение источника данных

Member 3864348

ата();
}
}

А LoadData() была определена следующим образом:-

охраняемых недействительными метод loadData()
{
// Создает таблицу данных и заполняет ее данными из xml-файла.Я только что удалил код заполнения Таблицы данных, чтобы этот пост был коротким.
DataTable dt = новый DataTable()
MyGridView.Источник данных = ДТ;
MyGridView.Привязку();
}

Итак, DatBind () уже вызван, но безуспешно.
Когда я снова нажимаю на ссылку (пункт меню на домашней странице) после изменения данных в gridview,он все еще показывает старые данные (однако данные в бэкэнд-xml-файле обновляются)

Karthik_Mahalingam

поместите точку останова и проверьте, что datatabe содержит данные

Member 3864348

В нем нет никакой базы данных, данные, отображаемые в gridview, взяты из XML-файла.

3 Ответов

Рейтинг:
2

Member 3864348

Это действительно была проблема с тайником.

Зовущий

Response.Cache.SetCacheability(HttpCacheability.NoCache) in Page_Load() fixed the refresh issue.


Рейтинг:
0

Suvendu Shekhar Giri

Так и должно быть не IsPostback
Проверьте следующее-

protected void Page_Load(object sender, EventArgs e)
{
   if (!IsPostBack) // note the not operator (!)
   {
      MyGridView.DataBind();
   }
} 


Надеюсь, это поможет :)


Member 3864348

Привет,
Спасибо за ваш ответ.
У меня уже есть метод с именем LoadData (), который вызывается как

protected void Page_Load(отправитель объекта, EventArgs e)
{
если (! IsPostBack)
{
Метод loadData();
}
}

а внутри метода LoadData() вызывается MyGridView.DataBind ().Но это мне не помогло.

Suvendu Shekhar Giri

Можете ли вы поделиться соответствующим кодом, т. е.,
--Метод loadData()
--изменить событие нажатия кнопки

Member 3864348

Вот как выглядит LoadData()

охраняемых недействительными метод loadData()
{
// Создает таблицу данных и заполняет ее данными из xml-файла.я только что удалил код заполнения Таблицы данных, чтобы этот пост был коротким.
DataTable dt = новый DataTable()
MyGridView.Источник данных = ДТ;
MyGridView.Привязку();
}

Suvendu Shekhar Giri

Это зелье выглядит прекрасно. Может вам еще и кнопку "Поделиться" ссылку/кнопку код события?

Member 3864348

охраняемых недействительными MyGridView_RowUpdating(объект отправителя,GridViewUpdateEventArgs е)
{
Текстовое поле tbProcessName =(текстовое поле)MyGridView.Ряды[электронный.Параметр rowindex].FindControl ("txtProcessName");

Текстовое поле tbStatus = (текстовое поле)MyGridView.Ряды[электронный.Параметр rowindex].FindControl ("txtStatus");

строка ModifiedProcessName = tbProcessName.Текст;
строка ModifiedStatus = tbStatus.Текст;

// Затем код для записи измененных данных обратно в xml-файл.

MyGridView.EditIndex = -1;
Метод loadData();
}

Member 3864348

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

Suvendu Shekhar Giri

- Это возможно. Наконец, я также хотел бы посмотреть, как вы получаете данные из XML в datatable и сохраняете их в XML.

Member 3864348

Я исправил эту проблему, это была проблема с кэшем.
В любом случае, спасибо за помощь.

Рейтинг:
0

Vincent Maverick Durano

Вам нужно установить источник данных перед вызовом DataBind (), чтобы отразить изменения.

protected void Page_Load(object sender, EventArgs e)
{
   if (!IsPostBack) 
   {
      MyGridView.DataSource = ???; //set the data source here
      MyGridView.DataBind();
   }
} 


Member 3864348

Привет,

Мой метод Page_load() выглядит следующим образом:-
protected void Page_Load(отправитель объекта, EventArgs e)
{
если (! IsPostBack)
{
Метод loadData();
}
}

А LoadData() была определена следующим образом:-

охраняемых недействительными метод loadData()
{
// Создает таблицу данных и заполняет ее данными из xml-файла.Я только что удалил код заполнения Таблицы данных, чтобы этот пост был коротким.
DataTable dt = новый DataTable()
MyGridView.Источник данных = ДТ;
MyGridView.Привязку();
}

Итак, DatBind () уже вызван, но безуспешно.
Когда я снова нажимаю на ссылку (пункт меню на домашней странице) после изменения данных в gridview,он все еще показывает старые данные (однако данные в бэкэнд-xml-файле обновляются)

Не могли бы вы плз помогите мне.

Vincent Maverick Durano

Я бы посоветовал вам отладить свой код, установить точку останова в методе LoadData (), а затем войти в него, чтобы выяснить, что пошло не так.