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の例 にある検索ボタンを実装しようとしています(操作/グリッドデータをクリックします)。しかし、私は彼らがそれをどのように実装するのかわかりません。私は期待しています「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)
{
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"});
Codeprojectに関する私の記事を参照してください。jqgridで複数の検索を実行する方法が説明されています。
jqGridの検索ツールバーとASP.NET MVCの複数のフィルターを使用
グリッドの設定バインドにはIModelBinderを使用し、データの並べ替えとフィルタリングには式ツリーを使用します。
オプションのパラメーターの扱いについてまだ疑問がある場合は、型名の後に?
を追加して、それらをnull可能として宣言するだけです。
これで、それらをnull
と比較して、それらが存在しないかどうかを確認できます。
文字列はすでにnull可能であるため、これを文字列で行う必要はありません。