所以我在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 examples中的搜索按钮(单击Manipulating / Grid Data)。但我不明白他们是如何实现它的。我期待着,例如“搜索:true”以及实现它的方法。
有没有人在jqgrid上实现搜索或知道明确显示如何操作的示例?
答案 0 :(得分:40)
我最近自己(昨天实际上)第一次实现了这个。对我来说最大的障碍是弄清楚如何编写控制器功能。函数签名是我花费最长的时间(注意_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)
{
List<AppGroup> groups = service.GetAppGroups();
List<AppGroup> 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"});
答案 1 :(得分:19)
请参阅我在codeproject上的文章,它解释了我们如何在jqgrid中进行多次搜索:
Using jqGrid’s search toolbar with multiple filters in ASP.NET MVC
我使用IModelBinder进行网格设置绑定,表达式树用于排序和过滤数据。
答案 2 :(得分:2)
如果您仍然想知道如何处理可选参数,只需在类型名称后添加?
即可将其声明为nullables。
现在,您可以将它们与null
进行比较,以检查它们是否缺席。
请注意,您不需要对字符串执行此操作,因为它们已经可以为空。
答案 3 :(得分:-1)
@Alan - 好吧,我使用你的方法并扩展我的webservice以期望这些额外的三个参数并检查“_search”是真/假。但是,为了使这项工作,我不得不在JavaScript中将其添加到我的ajax调用中:
if (!postdata._search) {
jQuery("#mygrid").appendPostData( {searchField:'', searchOper:'', searchString:''});
}
答案 4 :(得分:-2)
只需关注this link即可。它解释了所有实现......
您可以创建按钮searchBtn
,并可以点击
$("#searchBtn").click(function(){
jQuery("#list4").searchGrid(
{options}
)});