ASP.NET gridview привязка не работает / элемент управления не отображается

2

другая проблема с новичком. Почему не работает следующий код с страницей asp.net?

protected void Page_Load(object sender, EventArgs e)
{
    List<string> list = new List<string>();
    list.Add("Teststring");
    this.GridView.DataSource = list;
}

GridView - это элемент управления GridView на этой странице asp. Однако никакой сетки не появляется вообще. Он включен и доступен. Плюс, когда я отлаживаю, GridView.Rows.Count равен 0. Я всегда предполагал, что вы можете просто добавить общие списки и все классы, реализующие IList как DataSource, и gridview будет автоматически отображать контент? Или причина здесь в том, что это было сделано в обработчике события page_load. и если, как я могу заполнить сетку без какого-либо взаимодействия с пользователем при запуске?

Еще раз спасибо.

Теги:
gridview

3 ответа

2
Лучший ответ

В отличие от winforms, для разработки ASP вам нужно специально позвонить GridView.DataBind();. Я также вырвал бы этот код в отдельный метод и обернул бы первоначальный вызов в чек для обратной передачи. Это спасет вас от головной боли по дороге.

protected void Page_Load(object sender, EventArgs e)
{
   if (!Page.IsPostback)
   {
       List<string> list = new List<string>();
       list.Add("Teststring");
       bindMydatagrid(list);
   }
}

protected void bindMydatagrid(List<string> list)
{
    gv.DataSource = list;
    gv.DataBind();
}
  • 0
    Спасибо всем, ребята, я действительно глупый. Работает как шарм сейчас! Кстати, какая опасность, если не проверять IsPostback? Я думаю, что я до сих пор не справился с этим.
  • 0
    @noisecoder - без проверки IsPostback сетка будет перепривязываться каждый раз, когда обновляется ваша страница (нажатия кнопок, изменения выбранного индекса и т. д.).
Показать ещё 1 комментарий
4

Вы должны вызвать DataBind().

3

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

Пример:

protected void Page_Load(object sender, EventArgs e)
{
    List<string> list = new List<string>();
    list.Add("Teststring");
    this.GridView.DataSource = list;
    this.GridView.DataBind();
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню