GridView绑定List有数据但不显示。
GridView列定义:
C# code
<Columns>
<asp:HyperLinkField DataNavigateUrlFields="DeptID" DataNavigateUrlFormatString="DeptD.aspx?DeptID={0}"
DataTextField="DeptID" HeaderText="部门代码" />
<asp:BoundField DataField="DeptName" HeaderText="部门名称" />
<asp:BoundField DataField="DeptManager" HeaderText="部门主管" />
<asp:BoundField DataField="DeptRemark" HeaderText="备注" />
<asp:HyperLinkField DataNavigateUrlFields="DeptID" DataNavigateUrlFormatString="DeptD.aspx?DeptID={0}"
HeaderText="修改" Text="修改" />
</Columns>
数据绑定:
C# code
bDept bll = new bDept();
List<eDept> items = bll.SelectAll();
this.GridView1.DataSource = items;
this.GridView1.DataBind();
运行后,可以看到GridView中的行数与数据库中表的资料行数一致,说明已经查到数据(我还特意只查Top N条数据发现也是一致的),但不显示出来(每一行只显示修改这一列,其它几列都是空的)
------解决方案--------------------eDept 是怎么定义的
------解决方案--------------------
在gridview的DataBind()前,你用for循环输出泛型list的各属性看看,有值没有。
------解决方案--------------------使用模板列,然后使用<%#%>方式获取值,如下面红色部分,其他的同样修改就可以了。
<Columns>
<asp:HyperLinkField DataNavigateUrlFields="DeptID" DataNavigateUrlFormatString="DeptD.aspx?DeptID={0}"
DataTextField="DeptID" HeaderText="部门代码" />
// <asp:BoundField DataField="DeptName" HeaderText="部门名称" />
<asp:TemplateField HeaderText= "部门名称 ">
<ItemTemplate>
<%# ((eDept)Container.DataItem).DeptName%>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="DeptManager" HeaderText="部门主管" />
<asp:BoundField DataField="DeptRemark" HeaderText="备注" />
<asp:HyperLinkField DataNavigateUrlFields="DeptID" DataNavigateUrlFormatString="DeptD.aspx?DeptID={0}"
HeaderText="修改" Text="修改" />
</Columns>