У меня есть класс, где большинство его данных содержится в словаре, например:
public class Document
{
public string this[string key]
{
get { return (details.ContainsKey(key)) ? details[key] : null; }
}
public long DocumentId { get; set; }
private Dictionary<string, string> details = new Dictionary<string, string>();
public Dictionary<string, string> Details { get { return details; } }
}
Мне нужно будет связать эти объекты с GridView, где я динамически настраиваю отображаемые столбцы.
Мой вопрос: как мне настроить GridView, чтобы он обращался к индексатору для извлечения его данных (например, если я хотел, чтобы столбец отображался на значение в словаре Details
с ключом «DocumentName» «):
BoundField bf = new BoundField();
bf.DataField = "DocumentName";
bf.HeaderText = "Document Name";
myGridView.Columns.Add(bf);
Это не будет работать, так как «DocumentName» не является свойством Document
. Я знаю, что если бы эти столбцы были жестко запрограммированы, я мог бы просто использовать <%# Eval("[DocumentName]") %>
на странице, чтобы он смотрел на индексатор, но как мне сделать это с помощью кода?
Или я вынужден создать столбец Шаблон, добавить метку и заполнить его при создании каждой строки?