2009-06-09 86 views
2

另一个初学者问题。为什么asp.net页面下面的代码不工作?ASP.NET gridview绑定不起作用/控件不显示

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的所有类作为数据源,然后gridview会自动显示内容?或者是在这里它已经在page_load事件处理程序中完成的原因。如果在启动时如何在没有任何用户交互的情况下填充网格?

再次感谢。

回答

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会有什么危险?我想我仍然没有抓住那个。 – noisecoder 2009-06-12 18:37:31

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(); 
}