Параметр функции OnClickButton для MultiSelect jqgrid MVC3

Я пытаюсь использовать функцию множественного выбора в jqgrid, чтобы выбрать несколько строк и передать их контроллеру. Я создал кнопку следующим образом, но когда я выбираю строки и нажимаю кнопку, событие нажатия кнопки не запускается. Я предполагаю, что передаю неправильный параметр функции. Ниже приведен код javascript ...

$("#request").jqGrid('navButtonAdd', '#requestpager',
    {     caption: "Add", buttonicon: "ui-icon-info", title: "Add", //position: "first",
           onClickButton: function (ids) {
           var grid = $("#request");
             var rowids = grid.jqGrid('getGridParam', 'selarrrow');
             var count = rowids.length;
            var rowData, colData;
              for (var i = 0; i < count; i++) {
               rowData = $("#request").getRowData(rowids[i]);
               colData = rowData.Name;
       }
              jQuery("#request").jqGrid({ url: "/Home/Create/" + colData });

Есть ли у кого-нибудь предположения о том, что я делаю неправильно?


person inspiringmyself    schedule 25.07.2012    source источник


Ответы (1)


Что ж, реализовать множественный выбор в jqgrid несложно, я дам вам рабочий пример, который я реализовал в своем проекте.

HTML

<table id="grid" cellpadding="0" cellspacing="0"></table>//your grid
<div id="pagerGrid" style="text-align:center;"></div><br />//pager
<div><span><button type="button" id="sendMe"  class="send" >Send Me To Controller</button>//button which will take the data of all multiselect rows to controller

в вашем JqGrid просто включите множественный выбор: true

и напишите эту функцию javascript

$('#sendMe').click(function(){
       var selRowIds = $('#grid').jqGrid('getGridParam', 'selarrrow');
       if(selRowIds.length>0)
       {
       for( var i=0;i<selRowIds.length;i++){
        var Id=getCellValue(selRowIds[i],'Id');

        var Name=getCellValue(selRowIds[i],'Name');
        var Company=getCellValue(selRowIds[i],'Company');

        $.ajax({
        type: 'POST',
        url: '@Url.Action("AddMe")',
        contentType: 'application/json; charset=utf-8',
        data:JSON.stringify({Id: Id,Name:Name,Company:Company}),
        dataType: "json",

        success:function(){
        $('#grid').trigger("reloadGrid");
         }

         error: function () {

        }

        }); 

        }
         }
       });

и ваш метод контроллера будет выглядеть так

[HttpPost]

 public ActionResult AddMe(int? Id, string Name, string Company)
 {
}

Надеюсь, это поможет, это рабочий пример ...

P.S - отметьте, пожалуйста, это как ответ, если он вам помог.

person Piyush Sardana    schedule 26.07.2012
comment
Большое спасибо. Я пытаюсь использовать getRowData () для возврата rowData вместо значения ячейки. Вы знаете, какой метод контроллера должен принимать в качестве параметра из getRowData ()? - person inspiringmyself; 26.07.2012
comment
здесь ... это ответит вам на вопрос stackoverflow.com/questions/267707/ - person Piyush Sardana; 26.07.2012
comment
допустим, у вас есть класс с именем employee, у которого есть два свойства name и company, и то же самое, что вы показываете в сетке или меньшем количестве полей ... поэтому вы стягиваете свои данные и конвертируете их в json в представлении, а затем отправляете запрос ajax, как вы можете преобразовать данные вашей сетки в json ... проверьте решение edit:, сделанное этим парнем в самом его вопросе stackoverflow.com/questions/10744694/ - person Piyush Sardana; 26.07.2012
comment
Большое спасибо за быстрый ответ. Отличные ссылки! - person inspiringmyself; 26.07.2012