GridView не обновляется при добавлении строки: попробовал Databind()

#c# #linq #linq-to-sql #gridview

#c# #linq #linq-to-sql #gridview

Вопрос:

У меня есть GridView на моей странице, но я НЕ добавляю свою строку через GV. Добавление через текстовые поля и последующее отображение его в GV. Теперь проблема в том, что, когда я нажимаю кнопку ДОБАВИТЬ, мой GV не показывает эту обновленную строку. Если я нажму на эту страницу в строке меню, то вся моя страница обновится, и я смогу увидеть свой обновленный GV.

Вот макет моего события ADD_Click():

     protected void btnAdd_Click(object sender, EventArgs e)
    {
                        var td = from s in cv.Test1
                                 join r in dt.Test2 on s.ID equals r.ID
                                 where s.Col1 == ColumnName
                                 select s;

                        gvShowComm.DataSource = td;
                        gvShowComm.DataBind();

                    }

                    catch (Exception err)
                    {
                        //Nothing!!!
                    }
            }

            else
            {
                MessageBox.Show("Please Enter Entry for the textboxes!");
            }
        }
  

Теперь, когда я добавляю записи, GridView не показывает обновленную запись. Кто-нибудь может сказать мне, что происходит?

Спасибо!

Ответ №1:

Первое, что вы должны проверить, это то, что ваш td объект имеет правильное количество строк, которое вы ожидаете. GridView Должна быть правильная привязка к этому объекту, поэтому я предполагаю, что в вашем результате в td отсутствует строка.

Как вы «добавляете» строку? Вы сначала сохраняете его в БД, а затем запускаете свой вызов linq? Из приведенного выше кода это просто выглядит так, как будто вы вызываете какой-то linq для получения результата, но ничто не показывает, что вы добавляете что-либо, что могло бы привести к тому, что результат будет отличаться от начальной загрузки.

Добавляемый псевдокод должен быть похожим:

  1. Сохраните новую строку в базе данных
  2. Извлекает новые данные
  3. Привязать новые данные к сетке

Вы также могли бы сделать это вручную, извлекая старые данные. Добавьте строку вручную к старым данным (хранящимся в td вашем примере) перед их привязкой, а затем выполните привязку после того, как вы вручную добавили строку к результату linq.

Комментарии:

1. Спасибо! Это сработало как Jem. Я не извлекал правильные строки из td : (