29

したがって、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 で検索を実装した人や、その方法を明示的に示す例を知っている人はいますか?

4

5 に答える 5

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"});
于 2009-04-16T23:16:18.037 に答える
19

jqgrid で複数の検索を行う方法について説明している codeproject に関する私の記事を参照してください。

ASP.NET MVC で複数のフィルターを使用して jqGrid の検索ツールバーを使用する

グリッドの設定バインディングには IModelBinder を使用し、データの並べ替えとフィルタリングには式ツリーを使用します。

于 2010-02-19T09:29:42.957 に答える
2

?オプションのパラメーターの扱いについてまだ疑問がある場合は、型名の後にa を追加して、それらを nullable として宣言してください。

これで、それらを比較してnull、それらが存在しないかどうかを確認できるようになります。

文字列はすでに null 可能であるため、文字列でこれを行う必要がないことに注意してください。

于 2009-06-12T16:10:31.133 に答える
-2

このリンクをたどってください。すべての実装が説明されています...

ボタンを作成し、クリックsearchBtn時に検索フォームを呼び出すことができます

$("#searchBtn").click(function(){
   jQuery("#list4").searchGrid(
   {options}
    )});
于 2009-03-17T08:59:10.470 に答える