日期:2014-05-18  浏览次数:20828 次

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>