GridView не привязка данных при обратной передаче DetailsView

У меня такой же вопрос как:

Содержимое GridView не обновляется при изменении базовых данных

но предоставленные ответы не работают для меня, я за идеи, пожалуйста, потому что до сих пор я потратил 3 дня, пытаясь обновить GridView при обратной передаче DetailsView.

Ситуация такая:-

У меня есть GridView, что при выборе строки DetailsView отображает подробную информацию. в.

При нажатии на кнопку "Редактировать" DetailsView переходит в режим "Редактировать".

Я редактирую его и нажимаю кнопку Обновить.

Обновление запускает событие и корректно обновляет мою таблицу базы данных SQL.

Проблема заключается в том, что, несмотря на сотни сообщений, в которых используется GridView1.Databind(); он не обновится, пока я не нажму кнопку "Отмена".

Я знаю, что он отправил обратно, потому что я отладил его и увидел в обратной передаче Page_load(...).

я добавил

SqlDataSource1.DataBind();

а также

GridView1.DataBind()

в следующих местах, и ни один, кажется, не обновить мой GridView.

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        ...
    }
    else
    {
    SqlDataSource1.DataBind();
    GridView1.DataBind();
    }
}

также

protected void DetailsView1_ItemUpdating(object sender,   DetailsViewUpdateEventArgs e)
{
   GridView1.DataBind();
}

также

protected void DetailsView1_ItemUpdated(object sender, DetailsViewUpdatedEventArgs e)
{
    //GridView.SelectedIndex = -1;
   SqlDataSource1.EnableCaching = false;
    // UpdatePanel14.Update();
    SqlDataSource1.DataBind();
    GridView1.DataBind();
    SqlDataSource1.EnableCaching = true;
    // EndEditingGridView();
}

Итак, как вы можете видеть, я пробовал постбэк под Page_Load(), на Обновление и Обновление DetailsView. Я также пытался установить ViewState = Disabled на GridView тоже. Ничто не может заставить его обновить содержимое, если я не нажму кнопку "Отмена". Благодарю.

1 ответ

Я нашел ответ из какой-то предыдущей работы, которую я проделал: Что я нашел, так это удалить источник данных Gridviews, сбросить его индекс и связать его с данными. Затем обновите UpdatePanel, затем снова подключите сетку и снова свяжите ее с данными.

Моя функция, которую я вызываю в конце моего события DetailsView1_ItemUpdated():

private void EndEditingDetailsView1()
{
    GridView.DataSourceID = null;
    GridView.EditIndex = -1;
    GridView.DataBind();

    DetailsUpdatePanel.DataBind();
    DetailsUpdatePanel.Update(); 

    GridView.DataSourceID = "SqlDataSource";
    GridView.EditIndex = -1;
    GridView.DataBind();
}

работает удовольствие.

Другие вопросы по тегам