我有一个存储字典条目列表的类。我希望从代码隐藏绑定到gridview的数据源。
字典类型的代码,表示ErrorMessage和失败的字段。
public partial class FailedFields
{
private Dictionary<string, string> Code_Error = new Dictionary<string, string>();
public void AddFailedField(string field, string message)
{
Code_Error.Add(field, message);
}
public Dictionary<string, string> GetFailedFields()
{
return Code_Error;
}
}
词典条目列表代码。
public partial class ErrorFieldsList
{
private static List<Order.FailedFields> ErrorList = new List<Slab.FailedFields>();
public void AddErrorField(Order.FailedFields errs)
{
ErrorList.Add(errs);
}
public List<Order.FailedFields> GetErrorMessages()
{
return ErrorList;
}
}
在Visual Studio调试模式下运行,我可以看到列表中有错误列表,但我无法在gridview中显示它。贝娄是众多方式中的一种(最有意义的方式)我试图将列表设置为数据源。
ErrorBoxGridView.DataSource = FailedRecords.GetErrorMessages(). ;
ErrorBoxGridView.DataBind();
知道我哪里错了吗? 另外,我不想在aspx页面中指定数据源,因为我只想在发生错误时显示它。
如果有兴趣我为什么这样做来存储错误消息,请看一下:link 1
解决此问题 Related Question 当我完成维基时,我将记录一个完整的项目。
答案 0 :(得分:3)
我认为这不可能。我要做的是:
Dictionary<string, string>
定义包含字段和消息GetErrorMessages()
返回List<ErrorClass>
而不是Dictionary
修改强>
这是根据最新评论澄清事情。您需要的是一个类,其中包含一个错误的信息。例如:
public class ErrorInfo
{
public string Field { get { ... } }
public string Message { get { ... } }
}
之后,在表单上放置BindingSource
并(在代码中)将其DataSource
属性设置为错误消息类的列表。例如:
private List<ErrorInfo> errorList = new List<ErrorInfo>();
errorList.Add(new ErrorInfo() { ... });
errorList.Add(new ErrorInfo() { ... });
errorList.Add(new ErrorInfo() { ... });
bindingSource.DataSource = errorList;
数据网格视图绑定到BindingSource
。你现在应该看到数据。您可以手动创建列并将其设置为ErrorInfo
类的相应属性名称,但是您必须在代码中的某处将dataGridView.AutoCreateColumns
设置为false
。
答案 1 :(得分:1)
Databind List of Dictionnary into a GridView
List<Dictionary<string,string>> resultSet = SOME List of Dictionaries...
DataGridView.DataSource = resultSet.Select(x => new {
fieldOne = x["key1"], fieldTwo = x["key2"]
}).ToList();
DataGridView.DataBind();
现在你可以在DataGridView元素中绑定fieldOne和fieldTwo ......
请检查链接以获取准确的答案......
由于
答案 2 :(得分:0)
.NET提供了一个方便的KeyValuePair&lt;(Of&lt;(TKey,TValue&gt;)&gt;)结构,可以在这种情况下使用。这样您就不必定义自己的类。 HTH。
答案 3 :(得分:0)
或者你可以绑定到Value&amp;每个词典项的关键属性:
ErrorBoxGridView.DataSource = FailedRecords.GetErrorMessages();
ErrorBoxGridView.DataTextField = "Value";
ErrorBoxGridView.DataValueField = "Key";
ErrorBoxGridView.DataBind();