0

MVC2 で ajax ポスト リクエストを処理するためのガイドラインについて混乱しています。グリッドがリクエスト パラメータとして渡すデータを知るにはどうすればよいですか? どのような順序で、どのデータ型ですか? これを知った後は、サーバー側のポスト メソッドを設計できるのは 1 人だけだからです。サーバー側のメソッド ハンドラーとしてさまざまな関数プロトタイプを使用した多くの例を見てきました。

そんなことがあるものか?つまり、ajax投稿を行うのと同じjqgridです。同じjqgridのサーバー側アクションとして、どのように異なるタイプの関数プロトタイプが存在できますか?

編集

私の要件は、JqGrid が ajax 呼び出しを行うたびに、ドロップダウン リストの選択された値などの追加データを送信することです。ただし、MVC は JqGrid パラメーターのみを受け入れます。「paramData」を介して余分なデータを追加し、コントローラーのリクエストハンドラーでそれを受け取ることができますが、回避策があります。問題は、Grid パラメーターを逆シリアル化する Grid クラスを使用しており、このクラスがアプリに対してグローバルであることです。そのため、ページごとに変更することはできません。

私が必要とするのは、最初のパラメータが設定されているだけでは機能しないこれです:-

public void Jgrid(Jgrid grid,object hdnupdpg,string p_roleid)
{
}

しかし、どうすれば Jgrid.ajax 呼び出しでこれらの otherparams を送信できますか? 「paramsData」オプションのみを使用しますか?

ここに私が遭遇したサーバー側関数のプロトタイプがあります:

public void JGridData(JGrid grid)
{

}

そして、ここにグリッドクラスがあります

    public class JGrid
    {
        private bool IsSearch;
        public string sidx { get; set; }
        public string sord { get; set; }
        public int page { get; set; }
        public int rows { get; set; }

        public bool _search
        {
            get
            {
                string strSearch = HttpContext.Current.Request["_search"];
                if (!string.IsNullOrEmpty(strSearch))
                    return Convert.ToBoolean(strSearch);
                else
                    return IsSearch;
            }
            set { IsSearch = value; }
        }

        public string searchOper { get; set; }
        public string filters { get; set; }
        public int totalRecords { get; set; }
        public string procName { get; set; }
        public string SearchValue { get; set; }
        public string SearchField { get; set; }

        public string defaultFilter { get; set; }

        public string SortExpression
        {
            get { return sidx + " " + sord; }
        }


        public string FilterExpression
        {
            get
            {
                string filter = BuildFilter();
                if (!string.IsNullOrEmpty(defaultFilter) && !string.IsNullOrEmpty(filter))
                    return defaultFilter
                           + " AND (" + filter + ")";
                else if (!string.IsNullOrEmpty(defaultFilter))
                    return defaultFilter;
                return filter;
            }
        }

        public string BuildFilter()
        {
         ....
        }
}

編集

Here is my Script for JqGrid

    jQuery('#jgrid').jqGrid({
        autowidth: true,
        altRows: true,
        altclass: 'grdAltRwClr',
        datatype: 'local',
        forceFit: true,
        gridview: true,
        height: 290,
        mtype: 'post',
        rowList: [10, 20, 30],
        rowNum: 10,
        pager: '#pager',
        pagerpos: 'right',
        recordpos: 'left',
        rownumbers: false,
        scrollrows: false,
        sortname: 'roledtlid',
        toolbar: [true, "top"],
        url: rootPath + 'RoleDetail/JGridData',
        postData: { extraparams: function() { return escape(jQuery('#hdnupdpg').val()); },
        parentid: function() { return escape(jQuery('#p_roleid').val()); }
         },
        beforeSelectRow: function(rowid, e) { return false; },
        gridComplete: function() { GridComplete() },
        colModel: [
              { name: 'act', label: 'View', resizable: false, search: false, sortable: false, title: false, width: 6, index: 'act' }
            , { name: 'roleid', label: 'Role id', width: 10, index: 'roleid' }
            , { name: 'rolename', label: 'Role Name', width: 25, index: 'rolename' }
            , { name: 'pgname', label: 'Page Name', width: 30, index: 'pgname' }
            , { name: 'canedit', label: 'Edit', width: 10, index: 'canedit' }
            , { name: 'canview', label: 'View', width: 10, index: 'canview' }
             ]
    });
4

2 に答える 2

3

サーバーに送信されるパラメーターのリストは、使用するオプションによって異なります。使用しているjavaScriptコードを投稿していません。jqGridのprmNamesオプションに関して再定義できるパラメーターの名前。次のパラメータは、グリッドの塗りつぶしに使用されるURLに常に送信されます

  • ページ-要求されたページ-デフォルト値page
  • rows-要求された行数-デフォルト値rows
  • sort-ソート列-デフォルト値sidx
  • order-ソート順のデフォルト値sord
  • 検索-検索インジケーター-デフォルト値_search

[高度な検索]ダイアログまたはフィルターツールバーをパラメーターとともに使用する場合stringResult: true、フィルターに関する情報は、ここでfilters説明する形式で追加のパラメーターで送信されます。

たとえばCache-Control: private, max-age=0、サーバー応答のヘッダーに設定する場合(ここまたはここを参照)、またはサーバー応答の他のパラメーターを使用してキャッシュを制御する場合は、タイムスタンプを含むパラメーターをCache-Control削除できます。nd

prmNames: { nd: null }

_searchたとえば、パラメータの名前を変更する場合はisSearch、次を使用できます。

prmNames: { search: 'isSearch' }

必要なすべての設定を組み合わせることができます。

prmNames: { nd: null, search: 'isSearch' }
于 2012-04-10T23:18:36.697 に答える
2

jqgrid のどのメソッドに興味があるかは明確ではありませんが、試してみましょう

一般的に - 関心のあるリクエスト パラメータは、Firebug for Firefox を使用して表示できます。

  • Firefox に Firebug アドオンをインストールする
  • jqgrid でページを開くか、jqgrid デモページをまだ持っていない場合は開きます
  • Firefox の右上隅から Firebug コンソールをアクティブにします。
  • Firebug の [ネット] タブでリクエストの応答を確認します
  • リクエストを展開すると、その特定のリクエストで送信されているすべてのパラメータとヘッダー情報が表示されます
于 2012-04-10T19:12:24.297 に答える