C# ASP.NET gridview绑定不';t工作/控制不正常';我没有出现

C# ASP.NET gridview绑定不';t工作/控制不正常';我没有出现,c#,asp.net,gridview,C#,Asp.net,Gridview,另一个初学者的问题。为什么带有asp.net页面的以下代码不起作用 protected void Page_Load(object sender, EventArgs e) { List<string> list = new List<string>(); list.Add("Teststring"); this.GridView.DataSource = list; } 受保护的无效页面加载(对象发送方,事件参数e) { 列表=新列表(); 添

另一个初学者的问题。为什么带有asp.net页面的以下代码不起作用

protected void Page_Load(object sender, EventArgs e)
{
    List<string> list = new List<string>();
    list.Add("Teststring");
    this.GridView.DataSource = list;
}
受保护的无效页面加载(对象发送方,事件参数e)
{
列表=新列表();
添加(“Teststring”);
this.GridView.DataSource=list;
}
GridView是该asp页上的GridView控件。但是,根本没有显示网格。它既是启用的,也是可见的。另外,当我调试时,GridView.Rows.Count是0。我一直认为您可以添加通用列表和所有实现IList作为数据源的类,然后gridview会自动显示内容吗?或者是在页面加载事件处理程序中完成的原因。如果,在启动时没有任何用户交互,如何填充网格


再次感谢。

您应该调用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();
}
受保护的无效页面加载(对象发送方,事件参数e)
{
列表=新列表();
添加(“Teststring”);
this.GridView.DataSource=list;
this.GridView.DataBind();
}

与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();
}
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!Page.IsPostback)
{
列表=新列表();
添加(“Teststring”);
bindMydatagrid(列表);
}
}
受保护的void bindMydatagrid(列表)
{
gv.DataSource=列表;
gv.DataBind();
}

谢谢大家,我真的很笨。现在真是魅力四射!顺便说一句,如果不检查iPostBack,会有什么危险?我想我还没有掌握这个方法。@noisecoder-如果没有IsPostback检查,网格将在每次页面刷新时重新绑定(按钮单击、选定索引更改等)。另外,单独的方法便于在数据更改时手动重新绑定