所以我在ASP.NET MVC中有jqgrid的基本示例,javascript看起来像这样:
$(document).ready(function() { $("#list").jqGrid({ url: '../../Home/Example', datatype: 'json', myType: 'GET', colNames: ['Id', 'Action', 'Parameters'], colModel: [ { name: 'id', index: 'id', width: 55, resizable: true }, { name: 'action', index: 'action', width: 90, resizable: true }, { name: 'paramters', index: 'parameters', width: 120, resizable: true}], pager: $('#pager'), rowNum: 10, rowList: [10, 20, 30], sortname: 'id', sortorder: 'desc', viewrecords: true, multikey: "ctrlKey", imgpath: '../../themes/basic/images', caption: 'Messages' });
现在我正在尝试实现他们在jqgrid示例中的搜索按钮(单击Manipulating/Grid Data).但我不明白他们是如何实现它的.我期待例如"search:true"以及实现它的方法.
有没有人在jqgrid上实现搜索或知道明确显示如何操作的示例?
我最近自己(昨天实际上)第一次实现了这个.对我来说最大的障碍是弄清楚如何编写控制器功能.函数签名是我花费最长的时间(注意_search,searchField,searchOper和searchString参数,因为我见过的大多数asp.net mvc示例都缺少这些参数).javascript会向控制器发送初始加载和搜索调用.您将在代码中看到我正在检查_search参数是否为true.
下面是控制器和javascript代码.我对任何格式问题表示歉意,因为这是我第一次在这里发帖.
public ActionResult GetAppGroups(string sidx, string sord, int page, int rows, bool _search, string searchField, string searchOper, string searchString) { Listgroups = service.GetAppGroups(); List results; if (_search) results = groups.Where(x => x.Name.Contains(searchString)).ToList(); else results = groups.Skip(page * rows).Take(rows).ToList(); int i = 1; var jsonData = new { total = groups.Count / 20, page = page, records = groups.Count, rows = ( from appgroup in results select new { i = i++, cell = new string[] { appgroup.Name, appgroup.Description } }).ToArray() }; return Json(jsonData); }
这是我的HTML/Javascript:
$(document).ready(function() { $("#listGroups").jqGrid({ url: '<%= ResolveUrl("~/JSON/GetAppGroups/") %>', datatype: 'json', mtype: 'GET', caption: 'App Groups', colNames: ['Name', 'Description'], colModel: [ { name: 'Name', index: 'Name', width: 250, resizable: true, editable: false}, { name: 'Description', index: 'Description', width: 650, resizable: true, editable: false}, ], loadtext: 'Loading Unix App Groups...', multiselect: true, pager: $("#pager"), rowNum: 10, rowList: [5,10,20,50], sortname: 'ID', sortorder: 'desc', viewrecords: true, imgpath: '../scripts/jqgrid/themes/basic/images' //}); }).navGrid('#pager', {search:true, edit: false, add:false, del:false, searchtext:"Search"});
请参阅我在codeproject上的文章,它解释了我们如何在jqgrid中进行多次搜索:
在ASP.NET MVC中使用jqGrid的搜索工具栏和多个过滤器
我使用IModelBinder进行网格设置绑定,表达树用于排序和过滤数据.