Member 14183767 Ответов: 2

Почему dataset показывает старые данные


у меня есть небольшой веб-сайт, где пользователи загружают имена из листа excel, и эти имена сохраняются в таблице. затем у меня есть хранимая процедура, которая использует эти имена для извлечения данных из других таблиц и вывода их на другой лист excel. у меня также есть gridview, показывающий загруженные имена. моя проблема заключается в том, что каждый раз, когда я загружаю новые имена, gridview либо показывает предыдущие загруженные имена, либо пуст. когда я запускаю хранимую процедуру на sql, отображаются правильные имена. я ломал себе голову пытаясь понять почему gridview не показывает последние имена загруженные как на sql

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

protected void Page_Load(object sender, EventArgs e)
    {
            SqlConnection con = new SqlConnection(strConnString);

            con.Open();

            SqlCommand command = new SqlCommand("BenReport", con) { CommandType = System.Data.CommandType.StoredProcedure };

            SqlDataAdapter sda = new SqlDataAdapter();


            command.Connection = con;
            sda.SelectCommand = command;

            DataSet ds = new DataSet();

            sda = new SqlDataAdapter("BenReport", con);

            sda.Fill(ds);

            GRDBencount.DataSource = ds.Tables[0];
            GRDBencount.DataBind();
            con.Close();
        }

2 Ответов

Рейтинг:
2

Nirav Prabtani

Никогда не пишите всю логику таким образом

1) Создайте функцию saparate для логики
2) Управление событием обратной передачи страницы
3) вызов функции из условия события обратной передачи страницы

protected void Page_Load(object sender, EventArgs e)
{
              if (!IsPostBack)
                {
                   BindData();
                }


}




public void BindData(){

            SqlConnection con = new SqlConnection(strConnString);
            con.Open();
            SqlCommand command = new SqlCommand("BenReport", con) { CommandType = System.Data.CommandType.StoredProcedure };

            SqlDataAdapter sda = new SqlDataAdapter();
            command.Connection = con;
            sda.SelectCommand = command;

            DataSet ds = new DataSet();
            sda = new SqlDataAdapter("BenReport", con);
            sda.Fill(ds);

            GRDBencount.DataSource = ds.Tables[0];
            GRDBencount.DataBind();
            con.Close();
}


для дополнительной информации

Страница.Свойство IsPostBack (System.Web.Пользовательский интерфейс) | Microsoft Docs[^]


Member 14183767

привет , спасибо за ввод ur , мой gridview пуст, но в таблицах есть данные

Nirav Prabtani

Вы обновили код, как указано выше ?

Если да, то отладьте построчно и установите try {} catch{} block для получения дополнительной информации

Member 14183767

Привет, я добавил блок try catch, gridview все еще показывает старые данные

Member 14183767

неужели я не могу очистить свои таблицы/gridview до того, как будет загружен новый лист и вызвана хранимая процедура?

Nirav Prabtani

Вы можете привязать данные после применения заказа по времени desc, это вернет новые записи сверху.

Используете ли вы хранимую процедуру для привязки данных ?

Member 14183767

да BenReport это хранимая процедура, что я хочу, чтобы отобразить в GridView в

Nirav Prabtani

после завершения импорта данных из excel вы также вызывали функцию BindData ()?

Во время отладки не нужно искать вновь введенные данные ?

Member 14183767

импорт данных из excel выполняется на отдельной странице, затем он перенаправляется на другую страницу, где у меня есть мой gridview

Рейтинг:
2

Member 14183767

Привет , спасибо за вклад!
я изменил свои хранимые процедуры , теперь я могу очистить таблицу перед загрузкой нового листа с именами