how to bind datasource to List<Dictionary<string, string>>?
c#, datasource, dictionary, list
Solution
This can not be done I think. What I'd do is:
- Instead of using `Dictionary<string, string>` define a class that contains two public properties for field and message
- Create an object data source for that class (using Visual Studios "Data Sources" window)
- Have `GetErrorMessages()` return `List<ErrorClass>` instead of `Dictionary`
- Assign that list to the binding source.
EDIT This is to clarify things according to the latest comments. What you need is one class that contains the information for one error. For example:
public class ErrorInfo
{
public string Field { get { ... } }
public string Message { get { ... } }
}
After that you place a `BindingSource` on your form and (in code) set its `DataSource` property to a list of error message classes. For example:
private List<ErrorInfo> errorList = new List<ErrorInfo>();
errorList.Add(new ErrorInfo() { ... });
errorList.Add(new ErrorInfo() { ... });
errorList.Add(new ErrorInfo() { ... });
bindingSource.DataSource = errorList;
The data grid view is bound to the `BindingSource`. You should see data now. You can manually create columns and set them to the respective property names of your `ErrorInfo` class as well, but then you'd have to set `dataGridView.AutoCreateColumns` to `false` somewhere in your code.
Problem
I have a class that stores a list of dictionary entries. I want bind that to a datasource for gridview from codebehind. Code for dictionary type of , representing ErrorMessage and failed field. ``` 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; } } ``` Code for List of Dictionary entries. ``` 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; } } ``` Running in Visual Studio debug mode, i can see the list has the error list, but i cannot get it to display in the gridview. Bellow is one of the many ways (the one that makes most sense) i tried to set the list as a datasource. ``` ErrorBoxGridView.DataSource = FailedRecords.GetErrorMessages(). ; ErrorBoxGridView.DataBind(); ``` Any idea where i am going wrong ? Also, i don't want to specify a datasource in the aspx page because i only want to display this when the error occurs. If interested why i am doing this to store error messages, have a look at this:link 1 Solved Here Related Question I will document a complete project when i finish on the wiki.