другая проблема с новичком. Почему не работает следующий код с страницей 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. и если, как я могу заполнить сетку без какого-либо взаимодействия с пользователем при запуске?
Еще раз спасибо.
В отличие от 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();
}
Вы должны вызвать DataBind().
Вы забыли вызвать метод 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();
}