Я знаю, как избавить вас от этого:
DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("Name", typeof(string));
table.Columns.Add("Age", typeof(int));
table.Rows.Add(1, "Bob", 35);
table.Rows.Add(2, "Sam", 44);
table.Rows.Add(3, "Ann", 26);
SimpleGrid1.DataSource = table;
SimpleGrid1.DataBind();
к этому:
-------------------------------
| ID: 1 | Name: Bob | Age: 35 |
-------------------------------
| ID: 2 | Name: Sam | Age: 44 |
-------------------------------
| ID: 3 | Name: Ann | Age: 26 |
-------------------------------
Получено из ITemplate:
public class CustomColumnDefiner : ITemplate { ...
Добавить открытое поле в CustomColumnDefiner для имени столбца и ListItemType.
переопределить эту функцию в CustomColumnDefiner:
void ITemplate.InstantiateIn(System.Web.UI.Control container)
В InstantiateIn, если элемент ListItemType имеет значение ListItemType.Item, проверьте имя столбца. Если имя столбца - Возраст, измените значение входящей метки на «Возраст:» + входящее значение. Это в основном постобработка каждой ячейки столбца для добавления части «Возраст:».
На стороне настройки есть такая функция:
private static TemplateField GetTemplateColumn(string sColName)
{
TemplateField templateField = new TemplateField();
templateField.HeaderTemplate = new CustomColumnDefiner(ListItemType.Header, sColName);
templateField.ItemTemplate = new CustomColumnDefiner(ListItemType.Item, sColName);
return templateField;
}
затем в вашем коде страницы aspx позади.
myGridView.Columns.Add(GetTemplateColumn("Age"));
Я использовал этот метод, чтобы подчинить GridViews моей воле. Это будет работать для перехода от таблицы данных к HTML-таблице, которую вы хотите. Будет ли это соответствовать вашему общему решению, я не знаю.