Для отображения в GridView у вас есть несколько вариантов, от самых простых до самых сложных.
- Используйте вложенный SqlDataSource для типа оборудования и отображайте в отключенном раскрывающемся списке.
- Загрузите тип оборудования с оборудованием для привязки данных.
- Программно загрузите тип оборудования в событии RowDataBound.
Вот пример того, как вы можете включить данные типа оборудования:
var equips = GetEquipment();
var equipTypes = GetEquipmentTypes();
var data = from eq in equips
join et in equipTypes on eq.EquipmentTypeId equals et.EquipmentTypeId
select new { eq.EquipmentId, eq.Name, et.TypeName };
GridView.DataSource = data;
Для редактирования в GridView проще всего использовать DropDownList со своим собственным SqlDataSource (или пользовательским источником данных), который связан с Equipment.EquipmentTypeId
, что-то вроде этого:
<EditItemTemplate>
<asp:DropDownList ID="EquipmentTypeDropDown" runat="server"
SelectedValue='<%#Bind("EquipmentTypeId") %>'
DataSource='<%#GetEquipmentTypes() %>'
DataTextField="TypeName" DataValueField="EquipmentTypeId">
</asp:DropDownList>
</EditItemTemplate>
Где GetEquipmentTypes()
- это просто метод, который возвращает List<EquipmentType>
, который я использую для привязки данных.В этом случае, поскольку у меня нет базы данных, я просто генерирую данные в объекте-заглушке.Вы бы заменили этот метод своим классом BAL, который считывает данные из базы данных (или кода ADO.Net, или ObjectDataSource и т. Д.).
protected List<EquipmentType> GetEquipmentTypes()
{
return new List<EquipmentType> {
new EquipmentType { EquipmentTypeId = 1, TypeName = "Baseball" },
new EquipmentType { EquipmentTypeId = 2, TypeName = "Football" },
new EquipmentType { EquipmentTypeId = 3, TypeName = "Soccer" },
};
}