如何在DataView中将自定义类显示为GridView中的class.ToString()?

时间:2011-05-05 15:45:57

标签: c# asp.net gridview datatable tostring

我有一个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()覆盖函数。这里发生了什么,我怎么才能让它显示出来?

1 个答案:

答案 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>