我有一个类,其大部分数据都包含在字典中,如下所示:
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]") %>
来查看索引器,但是如何通过代码执行此操作呢?
或者我是否被迫创建一个模板列,添加一个标签,并在每一行的创建中填充它?
答案 0 :(得分:1)
是的,按照您的建议使用模板并从代码隐藏中填充是一种方法。其他方法是从提供的数据中可编程地生成DataTable对象,并将其绑定到网格。这有时也是一种有用的解决方案。