Сбор / захват массива идентификаторов отмеченных строк для удаления строк с помощью плагина Struts2-grid

У меня есть сетка для отображения данных в табличном формате следующим образом.

<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"/>

Когда ссылка удаляется, я хотел бы пройти ids (sizeId в данном случае) выбранных строк в виде массива.

Для этого необходимо вызвать функцию 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; 
});

Но эта функция никогда не вызывается.

Есть ли способ собрать ids (sizeId в этом случае) выбранных / проверенных строк, чтобы они могли быть представлены в виде массива просто потому, что ids передаются в виде строки с разделителями-запятыми, и мне не нравится собирать их с помощью некоторых функций, таких как String#split() или же StringTokenizer и анализировать их Long / Integer на сервере.

Сетка позволяет выбрать несколько строк в виде multiselect установлен в true , multiselect="true" ,

1 ответ

Для selected/checked rows часть, вот основной проект сетки api, За multiselect=true, вы можете получить идентификаторы выбранных строк в виде массива

$("#gridmultitable").jqGrid("getGridParam","selarrrow");
Другие вопросы по тегам