I am trying to implement an “as shipped” JQGrid search on a referenced field. I am having trouble displaying the text of the referenced Status model, as well as issues with the search not returning any results. Here are the models, map, viewmodel, controller, and view (as modeled after Trirand's demos):
Models:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
<div class="sfcode">public class Person<br /> {<br /> public virtual int Id { get; set; }<br /> public virtual int Name{ get; set; }<br /> public virtual Status { get; set; }<br /> }<br /> public class Status<br /> {<br /> public virtual int Id { get; set; }<br /> public virtual int Text{ get; set; }<br /> }<br /> </div> |
Map:
|
1 2 3 4 5 6 7 8 9 10 |
<div class="sfcode">public class PersonMap : ClassMap<person><br /> {<br /> public PersonMap()<br /> {<br /> Id(t => t.Id);<br /> Map(t => t.Name);<br /> References(t => t.Status, "StatusID);<br /> }<br /> }<br /> </person></div> |
ViewModel:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<div class="sfcode">public class PersonViewModel<br /> {<br /> public JQGrid PersonGrid { get; set; }<br /> int Id { get; set; }<br /> public virtual Status { get; set; }<br /> public string Name { get; set; }<br /> <br /><br /> public PersonViewModel()<br /> {<br /> PersonGrid = new JQGrid<br /> {<br /> Columns = new List<jqgridcolumn>()<br /> {<br /> new JQGridColumn<br /> {<br /> DataField = "Id",<br /> DataType = typeof(UInt32),<br /> HeaderText = "Id",<br /> PrimaryKey = true,<br /> Searchable = true,<br /> },<br /> new JQGridColumn<br /> {<br /> DataField = "Status",<br /> HeaderText = "Status",<br /> DataType = typeof(Status),<br /> Searchable = true,<br /> },<br /> new JQGridColumn<br /> {<br /> DataField = "Name",<br /> DataType = typeof(string),<br /> Searchable = true,<br /> }<br /> },<br /> };<br /> PersonGrid.ToolBarSettings.ShowSearchToolBar = true;<br /> }<br /> }<br /> </jqgridcolumn></div> |
Controller:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<div class="sfcode"> public ActionResult Search()<br /> {<br /> var model = new PersonViewModel();<br /> SetUpGrid(model);<br /> return View(model);<br /> }<br /> public void SetUpGrid(PersonViewModel model)<br /> {<br /> var PersonGrid = model.PersonGrid;<br /> PersonGrid.ID = "PersonGrid";<br /> PersonGrid.DataUrl = Url.Action("PersonDataRequested");<br /> }<br /> public JsonResult PersonDataRequested()<br /> {<br /> var model = new PersonViewModel();<br /> JQGridState gridState = model.PersonGrid.GetState(true);<br /> Session["gridState"] = gridState;<br /> return model.PersonGrid.DataBind(_session.Query<person>());<br /> }<br /> </person></div> |
View:
|
1 2 3 4 5 6 7 |
<div class="sfcode">@using Trirand.Web.Mvc<br /> @model ....PersonViewModel<br /> ...standard script/header stuff...<br /> <body><br /> @Html.Trirand().JQGrid(Model.PersonGrid, "PersonGrid")<br /> </body><br /> </div> |
The result I'm getting is that “Castle.Proxies.StatusProxy” is being displayed in the status column for each person in the grid, and no search by status (neither Id nor Text value) returns any results. The searches by the Person fields (Id and Name) work just fine.
Copyright 2014 TriRand LtdAll Rights ReservedRSS
Back to Top