Как получить пользовательский класс в столбце DataTable, отображаемый как class.ToString () в GridView? - PullRequest
1 голос
/ 05 мая 2011

У меня есть 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 Ответ

1 голос
/ 05 мая 2011

В вашем вопросе отсутствуют некоторые детали, но здесь рабочий пример, основанный на предположении, что 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>
...