我有一个DataTable,我正在绑定到GridView,如下所示:
DataTable WADSItems = new DataTable();
WADSItems.Columns.Add("Category", Type.GetType("System.String"));
WADSItems.Columns.Add("Quantity", Type.GetType("System.Int32"));
WADSItems.Columns.Add("Units", Type.GetType("Tables.PlantWADSUnitsList"));
gvPlantWADS.DataSource = WADSItems;
gvPlantWADS.DataBind();
前两列显示正常,但第三列没有显示,即使类PlantWADSUnitsList实现了ToString()覆盖函数。这里发生了什么,我怎么才能让它显示出来?
答案 0 :(得分:1)
您的问题缺少一些细节,但这里有一个基于 Tables.PlantWADSUnitsList 具有以下结构的假设的工作示例:
public class PlantWADSUnitsList
{
public string Name { get; set; }
public string Desc { get; set; }
public override string ToString()
{
return Name + ": " + Desc;
}
}
使用这样的gridview定义:
<asp:GridView ID="gvPlantWADS" runat="server" />
使渲染页面只有两列,一列用于类别,一列用于数量。我认为这是你的问题。
但是如果您禁用AutoGenerateColumns并自己指定列,则可以正常工作:
<asp:GridView ID="gvPlantWADS" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField HeaderText="Category" DataField="Category" />
<asp:BoundField HeaderText="Quantity" DataField="Quantity" />
<asp:BoundField HeaderText="Units" DataField="Units" />
</Columns>
</asp:GridView>