#c# #asp.net #gridview #datatable #tostring
#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:
В вашем вопросе отсутствуют некоторые детали, но вот рабочий пример, основанный на предположении, что таблицы.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>
Комментарии:
1. Вы попали в точку! Большое спасибо! Надеялся сохранить их автоматически сгенерированными, но это тоже сработает. =)