Я нахожусь в процессе реализации jqGrid с MVC 2 и структурой объекта.Я хотел бы воспользоваться его многочисленными функциями поиска в сочетании с поиском / сортировкой, а также взаимодействием CRUD.Сетка будет состоять из двух таблиц, поэтому функция поиска также должна иметь возможность поиска по соответствующей таблице.В настоящее время у меня есть разбиение на страницы / сортировка, а также на стороне клиента, возвращая все поисковые фильтры, необходимые на стороне контроллера.Я ищу пример того, как реализовать все различные операторы поиска в структуре сущностей, в то же время поддерживая поиск по страницам / сортировку и связанный поиск таблиц.
Мой текущий сценарий на стороне клиента:
$(document).ready(function () {
$('#grid').jqGrid({
colNames: ['TypeId', 'Type', 'CR Active', 'Category'],
colModel: [
{ name: 'TYPE_ID', index: 'TYPE_ID', hidden: true, search: false },
{ name: 'TYPE', index: 'TYPE', sortable: true, hidden: false },
{ name: 'CR_ACTIVE', index: 'CR_ACTIVE', align: 'right', sortable: true, hidden: false },
{ name: 'description', index: 'description', align: 'right', sortable: true, hidden: false }
],
pager: jQuery('#pager'),
sortname: 'TYPE',
rowNum: 10,
rowList: [10, 20, 50],
sortorder: "asc",
width: 600,
height: 250,
datatype: 'json',
caption: 'Available Types',
viewrecords: true,
mtype: 'GET',
jsonReader: {
root: "rows",
page: "page",
total: "total",
records: "records",
repeatitems: false,
userdata: "userdata"
},
url: "/Type/GetData"
}).navGrid('#pager', { view: false, del: true, add: true, edit: true },
{}, // default settings for edit
{}, // default settings for add
{}, // delete instead that del:false we need this
{closeOnEscape: true, multipleSearch: true, closeAfterSearch: true }, // search options
{} /* view parameters*/
);
});
Мой контроллер:
public JsonResult GetData(GridSettings grid)
{
using (IWE dataContext = new IWE())
{
var query = from host in dataContext.LKTYPE
select new
{
TYPE_ID = host.TYPE_ID,
TYPE = host.TYPE,
CR_ACTIVE = host.CR_ACTIVE,
description = host.VWEPICORCATEGORY.description
};
////sorting
query = query.OrderBy(grid.SortColumn, grid.SortOrder);
//count
var count = query.Count();
//paging
var data = query.Skip((grid.PageIndex - 1) * grid.PageSize).Take(grid.PageSize).ToArray();
//converting in grid format
var result = new
{
total = (int)Math.Ceiling((double)count / grid.PageSize),
page = grid.PageIndex,
records = count,
rows = data.ToArray()
};
return Json(result, JsonRequestBehavior.AllowGet);
}
}
GridSettings определяется как:
[ModelBinder(typeof(GridModelBinder))]
public class GridSettings
{
public bool IsSearch { get; set; }
public int PageSize { get; set; }
public int PageIndex { get; set; }
public string SortColumn { get; set; }
public string SortOrder { get; set; }
public Filter Where { get; set; }
}
Так что с этимЯ получаю от клиента все свои статьи по поиску / сортировке и поиску.
Если у кого-нибудь есть хороший пример того, как этого добиться, я был бы признателен.Я прошел через пример проекта кода, но у него есть только пример из нескольких возможных операторов поиска, и когда вы открываете другие, разрывы запроса.Не говоря уже о том, что он не поддерживает поиск по таблице, связанной с сетками (http://www.codeproject.com/script/Articles/ArticleVersion.aspx?aid=58357&av=73016). На этом сайте есть хороший пример http://www.trirand.com/blog/jqgrid/jqgrid.html,, но на стороне сервера все сделано в PHP и MySQL. Iна данный момент не знаю много об этом, но локальный поиск также возможен, если он сделает то, что мне нужно.
Заранее спасибо, Билли