【问题标题】:OnClickButton function parameter for MultiSelect jqgrid MVC3MultiSelect jqgrid MVC3的OnClickButton函数参数
【发布时间】:2012-07-24 09:49:55
【问题描述】:

我正在尝试使用 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 });

有人对我做错了什么有任何建议吗?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 jqgrid jqgrid-asp.net


    【解决方案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 中启用 multiselect: 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-如果对你有帮助,请将其标记为答案。

    【讨论】:

    • 非常感谢。我正在尝试使用 getRowData() 返回 rowData 而不是单元格值。你知道控制器方法应该把什么作为 getRowData() 的参数吗?
    • 这里...这将回答你的问题stackoverflow.com/questions/267707/…
    • 假设您有一个名为employee 的类,它有两个属性name 和company,并且您在网格或更少的字段中显示相同...所以您将数据字符串化并将其转换为json查看然后发送 ajax 请求,如何将网格数据转换为 json...检查编辑:这个人在他的问题中提出的解决方案 stackoverflow.com/questions/10744694/…
    • 非常感谢您的快速回复。优秀的参考!
    猜你喜欢
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多