另一个初学者问题。为什么下面的asp.net页面代码不能正常工作?
protected void Page_Load(object sender, EventArgs e)
{
List<string> list = new List<string>();
list.Add("Teststring");
this.GridView.DataSource = list;
}
GridView是该asp页面上的GridView控件。但是,根本没有网格显示。它既启用又可见。另外,当我调试时,GridView.Rows.Count为0.我总是假设您可以添加通用列表和实现IList作为DataSource的所有类,然后gridview将自动显示内容?或者这就是它在page_load事件处理程序中完成的原因。如果,如何在启动时没有任何用户交互的情况下填充网格?
再次感谢。
答案 0 :(得分:4)
你应该调用DataBind()。
答案 1 :(得分: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();
}
答案 2 :(得分: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();
}