【问题标题】:How to get custom class in DataTable column displayed as class.ToString() in GridView?如何让 DataTable 列中的自定义类在 GridView 中显示为 class.ToString()?
【发布时间】:2011-05-05 15:45:56
【问题描述】:

我有一个要绑定到 GridView 的 DataTable,如下所示:

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() 覆盖函数。这是怎么回事,我怎样才能让它显示出来?

【问题讨论】:

    标签: c# asp.net gridview datatable tostring


    【解决方案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>
    

    【讨论】:

    • 你看准了!非常感谢!希望让它们自动生成,但这也可以。 =)
    猜你喜欢
    • 2014-08-12
    • 1970-01-01
    • 2013-12-16
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多