This question is locked. New answers and comments are not allowed.
Hi all
Properties and fields for Order can not be known in advance, so I used a dictionary and Indexer, but I can not bind to the grid. Error message: Invalid property or field - 'id' for type: Order
Does anybody have an idea how I can solve this?
Any help is appreciated.
Thanks
ljs@bill-jc.com, Luojinsong
Model:
{ public Dictionary<string, object> Data = new Dictionary<string, object>(); public object this[string columnName] { get { object temp; if (Data.TryGetValue(columnName, out temp) == true) { return temp; } return null; } set { if (Data.ContainsKey(columnName) == true) Data.Remove(columnName); Data.Add(columnName, value); } }}ViewModel:
public class OrdersViewModel { public List<Order> Data = new List<Order>(); public IEnumerable<GridColumnSettings> Columns { get; set; } }Controller:
public class HomeController : Controller { public ActionResult Index() { ViewBag.Message = "Welcome to ASP.NET MVC!"; OrdersViewModel model = new OrdersViewModel(); Order order1 = new Order(); order1.Data.Add("id", "1"); order1.Data.Add("customer", "customer1"); order1.Data.Add("qty", "100"); model.Data.Add(order1); Order order2 = new Order(); order2.Data.Add("id", "2"); order2.Data.Add("customer", "customer2"); order2.Data.Add("qty", "200"); model.Data.Add(order2); model.Columns = this.columns(); return View(model); } public ActionResult About() { return View(); } public List<GridColumnSettings> columns() { List<GridColumnSettings> columns = new List<GridColumnSettings>(); GridColumnSettings columnSettings; columnSettings = new GridColumnSettings(); columnSettings.Member = "id"; columnSettings.Title = "id"; columnSettings.MemberType = typeof(String); columns.Add(columnSettings); columnSettings = new GridColumnSettings(); columnSettings.Member = "customer"; columnSettings.Title = "customer"; columnSettings.MemberType = typeof(String); columns.Add(columnSettings); columnSettings = new GridColumnSettings(); columnSettings.Member = "qty"; columnSettings.Title = "qty"; columnSettings.MemberType = typeof(int); columns.Add(columnSettings); return columns; } }
View:
@model TelerikMvcApplication1.ViewModels.OrdersViewModel@{ ViewBag.Title = "Home Page";}<h2>@ViewBag.Message</h2><p> To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc<;/a>.</p>@( Html.Telerik().Grid(Model.Data.AsEnumerable()) .Name("Grid") .Columns(columns => { columns.LoadSettings(Model.Columns as IEnumerable<GridColumnSettings>); }) .Reorderable(resizing => resizing.Columns(true)) .Resizable(resizing => resizing.Columns(true)) .Groupable(grouping => grouping.Enabled((bool)true)) .Sortable() .Groupable() .Footer(true) )