3

jqueryData-Tableへのデータソースとして機能するJavaコントローラーにユーザー定義パラメーターを渡そうとしています。重要なのは、jspのコンボボックスの変更イベントでこれを実行したい(パラメーターを渡す)ことです。

これが私のデータテーブルの初期化です:

var oTable = $('#reqAllQueriesTable')
            .dataTable(
                    {
                        "sDom": '<"H"l<"projectTeamTools">frtip>',
                        "bProcessing": true,
                        "bServerSide": true,
                        "sAjaxSource": "query/getQuery",
                        "bPaginate" : true,
                        "bLengthChange": true,
                        "bScrollCollapse" : true,
                        "iDisplayLength" : 10,
                        "bFilter" : true,
                        "bJQueryUI" : true,
                        "sPaginationType" : "full_numbers",
                        "sSearch": "Search"
                    });

値がコントローラーに渡されるコンボボックスとそれぞれの機能は次のとおりです。

    $("div.projectTeamTools").html('Organize by Project Teams: <select id="projectTeams"><option value="0">Project Team</option><option value="1">All</option><option value="2">Not Associated</option><c:forEach var="projectTeam" items="${userProjectTeams}"><option value="${projectTeam.projectId}">${projectTeam.projectName}</option></c:forEach></select>');  


    $("#projectTeams").change(function () {
        onTeamSelect($(this).val());
    }); 

    function onTeamSelect(teamId){
        alert(teamId +" Selected");
//This function to pass the parameter to the datatable is supposed to be here.
        oTable.fnDraw();
    }

次に、datatableは、ajaxSourceから受信した新しいデータを表示しますgetQuery

PS:古いバージョンのデータテーブルを使用しているため、fnServerParamsを使用できません。fnServerDataを使用してみましたが、役に立ちませんでした。fnServerDataでajax関数を使用する方法が間違っていると思います。

"fnServerData": function ( sSource, aoData, fnCallback ) {
                            $("#projectTeams").change(function() { 
                                 aoData.push( { "name": "myParam", "value": $("#ComboBox option:selected").value() } );
                                    $.ajax( {
                                        "dataType": 'json', 
                                        "url": sSource, 
                                        "data": aoData, 
                                        "success": fnCallback
    });

コンボボックスからアイテムを選択すると、ブラウザの「ネットワークXHR」に渡したいパラメータが表示されません。助けてください!

4

1 に答える 1

2

答えを得た。初期化中、fnServerDataは次のようになります。

"fnServerData": function ( sSource, aoData, fnCallback ) {
                    aoData.push( { "name" : "myTeamId", "value" : myTeamId  } );
                    $.getJSON( sSource, aoData, function (json) { 
                        fnCallback(json);
                    });
              }

パラメータを渡したいコンボボックスのonChange関数:

    $("#projectTeams").change(function () {
        onTeamSelect($(this).val());
    }); 
    function onTeamSelect(teamId){
        myTeamId = teamId;
        oTable.fnDraw();
    }

ここで、myTeamIdはグローバル変数です。oTable.fnDraw()データテーブルを再描画し、の値をに割り当てます。teamIdこれmyTeamIdはで使用しfnServerDataます。このコードは私のために働いた!

于 2012-05-24T09:40:33.283 に答える