2017-04-03 3 views
0

jqueryデータテーブルの列としてチェックボックスを実装しようとしています。私がレコードを選択すると、それだけで、それぞれのActionクラスでアクションが実行されます。私は隠れ変数を作成し、同様にjQueryのに値を代入しています:jQuery DatatableのすべてのレコードのStruts2チェックボックス

HTML:チェックボックスがクリックされたときはいつでも

<s:iterator value="warehouseBean.pickReqList" status="matStat"> 
    <s:hidden name="warehouseBean.pickReqList[%{#matStat.index}].grade"></s:hidden> 
    <s:hidden name="warehouseBean.pickReqList[%{#matStat.index}].quantity"></s:hidden> 
    <s:hidden name="warehouseBean.pickReqList[%{#matStat.index}].action"></s:hidden> 
</s:iterator> 

<tbody><s:iterator value="warehouseBean.pickReqList" status="matStat"> 
    <tr> 
     <td><s:property value="grade" /></td> 
     <td><s:property value="quantity" /></td> 
     <td><s:select name="warehouseBean.pickReqList[%{#matStat.index}].pickQuantity" list="pickQuantity"></s:select></td> 
     <td><s:checkbox name="chkboxname" cssClass="checkbox pickIndivCheck"></s:checkbox></td> 
    </tr> 
    </s:iterator> 
</tbody> 

、隠れた変数は、値が割り当てられています。

のjQuery:

$('.pickIndivCheck').click(function(e){ 
    var index=$(this).closest('tr').index(); 
    $('#warehousePick_warehouseBean_pickReqList_'+index+'__action').val(e.target.checked); }); 

私は並べ替えたり、テーブルの別のページに移動していない場合は、上記のコードは完璧に動作します。データテーブルの最初のページでチェックボックスをオンにすると、チェックされたプロパティはアクション変数に割り当てられ、同じことがアクションクラスに反映されます。

もし私が並べ替えたり、改ページしたら、それは動作しません。トラブルシューティングの際に、jQueryコードがクリックされたチェックボックスのインデックスを取得しており、その値を割り当てていることが分かりました。たとえば、オブジェクトに20の要素がある場合、データテーブルの2つの異なるページに読み込みます。隠された変数は、同様に書かれています:

<input type="hidden" name="warehouseBean.pickReqList[0].grade" value="BR000-R" id="warehousePick_warehouseBean_pickReqList_0__grade"/> 
<input type="hidden" name="warehouseBean.pickReqList[0].quantity" value="1" id="warehousePick_warehouseBean_pickReqList_0__quantity"/> 
<input type="hidden" name="warehouseBean.pickReqList[0].action" value="false" id="warehousePick_warehouseBean_pickReqList_0__action"/> 

<input type="hidden" name="warehouseBean.pickReqList[1].grade" value="BR001-R" id="warehousePick_warehouseBean_pickReqList_1__grade"/> 
<input type="hidden" name="warehouseBean.pickReqList[1].quantity" value="1" id="warehousePick_warehouseBean_pickReqList_1__quantity"/> 
<input type="hidden" name="warehouseBean.pickReqList[1].action" value="false" id="warehousePick_warehouseBean_pickReqList_1__action"/> 

<input type="hidden" name="warehouseBean.pickReqList[2].grade" value="BR002-R" id="warehousePick_warehouseBean_pickReqList_2__grade"/> 
<input type="hidden" name="warehouseBean.pickReqList[2].quantity" value="1" id="warehousePick_warehouseBean_pickReqList_2__quantity"/> 
<input type="hidden" name="warehouseBean.pickReqList[2].action" value="false" id="warehousePick_warehouseBean_pickReqList_2__action"/> ......... 

<input type="hidden" name="warehouseBean.pickReqList[18].grade" value="BR0018-R" id="warehousePick_warehouseBean_pickReqList_18__grade"/> 
<input type="hidden" name="warehouseBean.pickReqList[18].quantity" value="1" id="warehousePick_warehouseBean_pickReqList_18__quantity"/> 
<input type="hidden" name="warehouseBean.pickReqList[18].action" value="false" id="warehousePick_warehouseBean_pickReqList_18__action"/> 

<input type="hidden" name="warehouseBean.pickReqList[19].grade" value="BR0019-R" id="warehousePick_warehouseBean_pickReqList_19__grade"/> 
<input type="hidden" name="warehouseBean.pickReqList[19].quantity" value="1" id="warehousePick_warehouseBean_pickReqList_19__quantity"/> 
<input type="hidden" name="warehouseBean.pickReqList[19].action" value="false" id="warehousePick_warehouseBean_pickReqList_19__action"/> 

これは、同様のDataTableに表示される方法です。テーブルをソートすると、最後のレコードがテーブルの最初のページに表示されます。私は第二のレコードを選択した場合、jQueryの方法は、実際の変数がなければならないのに対し、(1れる)隠れ変数

warehousePick_warehouseBean_pickReqList_1__action

に割り当てられている現在のインデックスを取得

warehousePick_warehouseBean_pickReqList_18__action

テーブルのレコードは非表示オブジェクトのインデックスと同じではありません。異なるテーブルの行のチェックボックスに値を割り当てる方法を教えてください。

答えて

0

私はダミー変数一時を作成し、HTMLは、同様に、

<tr> 
    <td><s:property value="grade" /></td> 
    <td><s:property value="quantity" /></td> 
    <td><s:select name="warehouseBean.pickReqList[%{#matStat.index}].pickQuantity" list="pickQuantity"></s:select></td> 
    <td><s:checkbox name="warehouseBean.pickReqList[%{#matStat.index}].temp" cssClass="checkbox pickIndivCheck"></s:checkbox></td> 
</tr> 

(クリックする)チェックボックスのIDを取得するにはjQueryを変更変更し、IDからインデックスを抽出し、割り当てられましたインデックスを使用して変数を作成した後のそれぞれの隠し変数にも同様に適用されます。

$('.pickIndivCheck').click(function(e){ 
    var clId=this.id; 
    var temp=clId.substring(40); 
    var n=temp.lastIndexOf('_'); 
    var index=temp.substring(0,n-1); 
    $('#warehousePick_warehouseBean_pickReqList_'+index+'__action').val(e.target.checked); }); 
関連する問題