0

ページングと検索にjQueryデータテーブルプラグインを使用しています。これをリピーターに適用していますが、クライアント側では正常に動作しています。

パラメータ値をドロップダウンからストアドプロシージャに渡して必要なデータ行のみをフェッチできるように、サーバー側を変更するにはどうすればよいですか?

要するに、カスタムページングを意味します。現在、ページの読み込み時にテーブルからリピーターにすべてのデータ行をバインドしています。どうすればパラメータを渡すことができますか?

aspxページを見てください

$(document).ready(function () {
        $('#TblDataTable').dataTable({

            "bJQueryUI": true,
            "bSort": true,
            //    "bServerSide": true,
            "sAjaxSource": "/Productindex.aspx/LoadProductList()",
            "fnServerData": function (sSource, aoData, fnCallback) {
                $.ajax({
                    "type": "POST",
                    "dataType": 'json',
                    "contentType": "application/json; charset=utf-8",
                    "url": sSource,
                    "data": "{'sEcho': '" + aoData[0].value + "'}",
                    "success": fnCallback
                });
            },
            // "bProcessing": true,
            "sPaginationType": "full_numbers",
            "iDisplayLength": 10,
            "sLengthMenu": "Page Size",

            "aLengthMenu": [[5, 10, 15, 25, 50, 100, 150, 200], [5, 10, 15, 25, 50, 100, 150, 200]],
            "aoColumns": [
                   { "bSearchable": true },
                   { "bSearchable": false },
                   { "bSearchable": false },
                   { "bSearchable": false },
                   { "bSearchable": false },
                   { "bSearchable": true },
                   { "bSearchable": false },

            ],

        });
    });<script>

以下は、ページの読み込み時にC#で行っていることです。このメソッドを呼び出しています

  public void LoadProductList()
  {
        Products objProducts;

        List<Products> objProductlist;

        try
        {
            objProducts = new Products();
            objProductlist = objProducts.GetProductList();
            rptProduct.DataSource = objProductlist;
            rptProduct.DataBind();
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
        }
    }

私が望むのは、GetProductListメソッドにパラメータを渡して、関連するデータのみを取得することです。つまり、ドロップダウンから 5 を選択すると、5 行がフェッチされます。

4

1 に答える 1

0

この種のプラグインを使用したことはありませんが、ポイントはメソッドにあると言えます

$.ajax({
                "type": "POST",
                "dataType": 'json',
                "contentType": "application/json; charset=utf-8",
                "url": sSource,
                "data": "{'sEcho': '" + aoData[0].value + "'}",
                "success": fnCallback
});

これを使用したことがあるかどうかはわかりませんが、まずメソッド LoadProductList を静的メソッドとしてマークし、属性 [WebMethod] を使用する必要があります。次に、このメソッドの署名に次のように引数を追加します。

[WebMethod]
public static [List<Produit>] LoadProductList(int rows)

[Serializable] 属性を使用して、製品を Serializable と記述します。その後、サーバー側は問題ありませんが、コンソール プログラムまたはsoupUIでテストすることをお勧めします。これで、クライアント側に戻ることができます。メソッド $.ajax のこの行を見てください

"data": "{'sEcho': '" + aoData[0].value + "'}",

'sEcho' を行に、aoData[0].value を返したい行数に置き換える必要があります。次に、メソッド fnCallback で、method(result) のようなシグネチャを持つ関数オブジェクトを渡す必要があると思います。このメソッドでは、result.d を使用して、サーバー側のメソッド LoadProductList によって渡された結果を取得できます。テストのために、jQuery で d が使用されている場合は、console.log([javascript のオブジェクト]) を使用して結果と結果のログを記録してみてください。

ところで、私はあなたのスクリプトでこの行を見つけました

"sAjaxSource": "/Productindex.aspx/LoadProductList()",

パスが正しいことを確認する必要があると思います。そうでない場合は、../ を使用して親にジャンプする必要があり、「()」は必要ありません (このプロパティが $.ajax で使用した sSource に似ている場合、および'%parent%/Productindex.aspx/LoadProductList' のような引数 sSource に正しいメソッド パスを渡す必要があります)。

この簡単な説明があなたの質問に答えることができれば幸いです.

于 2012-12-12T15:16:36.937 に答える