0

jqGridはpostdataをコントローラーに送信しません。私はstackoverflowで提供されたすべてのソリューションを試しましたが、どこかでエラーが発生しているようです。だからここにコードがあります:

     関数refreshGrid(){
        alert('CompanyNamePart ='+ $( "#CompanyNamePart")。val()); //これが正しい値かどうかを確認します
        $( "#list")。trigger('reloadGrid');
        falseを返します。
    }

    $(関数(){
        var grid = jQuery( "#list")。jqGrid({
            データ型:'json'、
            キャプション:「トランザクションログ」、
            ポストデータ:{
                CompanyNamePart:function(){return $( "#CompanyNamePart")。val(); }、
                UsernamePart:function(){return $( "#UsernamePart")。val(); }、
            }、
            url:'@ Url.Action( "GetTransactionLogData")'、
            mtype:'GET'、
            colNames:['Ref。'、'TradeDate'、'Status']、
            colModel:[
                {名前:'参照'、インデックス:'参照'、幅: '60'}、
                {名前:'TradeDate'、インデックス:'TradeDate'、幅: '70'}、
                {名前:'ステータス'、インデックス:'ステータス'、幅:'80'}
            ]、
            ポケットベル:$('#pager')、
            rowNum:10
            高さ:「100%」
        });
    });


コントローラー側には、簡単なコードがあります。

[HttpGet]
        public ActionResult GetTransactionLogData(string sidx、string sord、int page、int rows、string CompanyNamePart、string UsernamePart)
        {return Json(null); }

デバッグモードでボタンをクリックしてrefreshGrid()を呼び出すと、テキストフィールドの値が正しく読み取られたことを確認するアラートが1つ表示され、その後グリッドが更新されます。コントローラの呼び出しを受け取りましたが、CompanyNamePart変数とUsernamePart変数の値を入力しても、すべてnullです。

別のアプローチでpostdataセクションの別のソリューションを試しました。最初に、必要な値を返す関数を作成し、それらをグリッドのpostdataセクションに配置しました。

    関数getCompanyNamePartVal(){
        $( "#CompanyNamePart")。val();を返します。
    }

    関数getUsernamePartVal(){
        $( "#UsernamePart")。val();を返します。
    }

...jqgridの定義
    ポストデータ:{
                CompanyNamePart:getCompanyNamePartVal()、
                UsernamePart:getUsernamePartVal()、
            }、

しかし、成功しませんでした。

Firebugをチェックしたところ、jqGridがpostdata値を送信していないことがわかりました。

Firebugによってキャッチされたパラメータを取得する
_ 1340696638960
_search false
nd 1340696638955
ページ1
行10
sidx    
sord asc

私は何が間違っているのですか?

4

2 に答える 2

4

パラメータはpostDataではなくと呼ばれますpostdata。JavaScript は大文字と小文字を区別する言語であることを忘れないでください。だから、このようにしてみてください:

postData: {
    CompanyNamePart: function () { return $("#CompanyNamePart").val(); },
    UsernamePart: function () { return $("#UsernamePart").val(); }
}

UsernamePartまた、コードに含まれていて、無効な JavaScript を生成する関数の後の末尾のコンマを削除したことにも注意してください。一部のより機密性の高いブラウザーは、それを受け入れない場合があります。

于 2012-06-26T07:55:55.810 に答える