2014-03-06 49 views
1

我有一個網格以表格格式顯示數據,如下所示。使用Struts2-grid插件收集/捕獲已檢查行的id數組以刪除行

<s:url id="remoteurl" action="SizeGrid" namespace="/admin_side"/> 
<s:url id="editurl" action="SizeCRUD" namespace="/admin_side"/> 

<sjg:grid 
    id="gridmultitable" 
    caption="Size" 
    dataType="json" 
    href="%{remoteurl}" 
    pager="true" 
    navigator="true" 
    navigatorSearchOptions="{sopt:['eq','ne','lt','gt']}" 
    navigatorEdit="false" 
    navigatorView="false" 
    navigatorAddOptions="{height:280, width:500, reloadAfterSubmit:true}" 
    navigatorEditOptions="{height:280, width:500, reloadAfterSubmit:false}" 
    navigatorViewOptions="{height:280, width:500}" 
    navigatorDelete="true" 
    navigatorDeleteOptions="{height:280, width:500,reloadAfterSubmit:true}" 
    gridModel="gridModel" 
    rowList="5,10,15" 
    rowNum="5" 
    rownumbers="true" 
    editurl="%{editurl}" 
    editinline="true" 
    multiselect="true" 
    onClickGroupTopics="rowdelete" 
    onSelectRowTopics="rowselect" 
    onEditInlineSuccessTopics="oneditsuccess" 
    viewrecords="true" 
    shrinkToFit="false" 
    width="1045" 
    > 

    <sjg:gridColumn name="sizeId" index="sizeId" title="%{getText('size.title.id')}" key="true" frozen="true" width="200" editable="false" dataType="Long" sortable="true" search="true" sorttype="integer" searchoptions="{sopt:['eq','ne','lt','gt']}"/> 
    <sjg:gridColumn name="sizeCode" index="sizeCode" title="%{getText('size.title.code')}" editrules="{required: true}" width="780" editable="true" sortable="true" search="true" sorttype="text"/> 

</sjg:grid> 

<s:hidden name="idArray"/> 

當點擊了刪除鏈接,我想選擇的行的傳遞idssizeId在這種情況下)作爲數組。

爲此,需要在觸發刪除行的實際請求之前調用JavaScript函數。

我嘗試過以下原始/不完整的JavaScript函數。

$.subscribe('rowdelete', function(event, data){ 
    var checks=$("#gridmultitable").find('input[type=checkbox]'); 
    var idArray =new Array(); 
    alert(checks.length); 

    for(var i=0;i<checks.length;i++) 
    { 
     if(checks[i].checked) 
     { 
      var sizeId = checks[i].parentNode.parentNode; 
      var id=sizeId.id; 

      idArray.push($("#gridmultitable").jqGrid('getCell',id,'cellvalue')); 
     } 
    } 
    document.getElementById("idArray").value=idArray; 
}); 

但是從不調用這個函數。

有一種方法來收集idssizeId在這種情況下)的選擇/檢查的行,以便它們可以作爲陣列僅僅是因爲ids作爲逗號分隔的字符串傳遞來供應和我不喜歡使用一些類似功能的收集他們String#split()StringTokenizer並將它們解析爲服務器上的Long/Integer

該網格允許選擇多行作爲multiselect設置爲truemultiselect="true"

回答

0

對於selected/checked rows部分,here是底層網格項目api。對於multiselect=true,您可以通過

$("#gridmultitable").jqGrid("getGridParam","selarrrow"); 
+0

檢索選定行的ID,請讓我知道我可以在哪裏放這條線?問題中指定的函數本身未被調用。 (系統以某種方式沒有通知我你的答案)。 – Tiny