天天看点

jqGrid取值问题表格动态的加行,删除行,保存

最近用jqGrid 做个功能,要实现在jqGrid表格上动态的加行、删行,最后点击“保存”按钮,与后台交互,保存数据。例:

   var lastFlag ;

   $gridTable = $("#gridTable").jqGrid( {

        datatype : 'json',

        colNames : ['age', 'sex' ],

        colModel : [

                   {name : 'age',index : 'age',width : 80,editable:true,edittype:'text',editrules:{required:true}},

                   {name : 'sex',index : 'sex',width : 160,editable:true,edittype:'text',editrules:{required:true}}

                   ],

        rowNum : 10,

        pager : "#tablePager",

        multiselect : false,

        viewrecords : true,

        sortorder : "desc",

        jsonReader : {

            root : "dataRows",

            repeatitems : false

        },

        caption : "数据列表",

        height : "auto",

        rownumbers : true,

      onSelectRow : function(id){

        if(id && id!=lastFlag){

         $('#gridTable').jqGrid('saveRow',lastFlag);     

         lastFlag=id;

        }

        $('#gridTable').jqGrid('editRow',id,true);

      },  

     editurl : "../propManage.do?method=doNothing"       

    })

    $("#addButton").bind("click", function() {

     var selectedId = $("#gridTable").jqGrid("getGridParam", "selrow");

        var dataRow = { 

            age: "",

            sex: ""

        };   

        var ids = jQuery("#gridTable").jqGrid('getDataIDs');

        var rowid = getMaxId(ids) + 1;

        if (selectedId) {        

            $("#gridTable").jqGrid("addRowData", rowid, dataRow, "after", selectedId);

        } else { 

            $("#gridTable").jqGrid("addRowData", rowid, dataRow, "last");    

        }      

    })

    $("#removeButton").bind("click", function() {

     var selectedId = $("#gridTable").jqGrid("getGridParam","selrow");

     if(!selectedId){

        alert("请选择要删除的行");

        return;

     }else{          

         $("#gridTable").jqGrid("delRowData", selectedId);     

     }

    })

        问题1:JQGRID  编辑模式下怎样取行数据?

  用户操作模拟:用户新增一行,鼠标点进去,该行进入编辑状态,填写数据,点击保存。

  问题出现了: 点击保存以后,需要通过getRowData()获取表格里的数据传回后台,但是当行在编辑状态下时,getRowData()取得的值为类似<input ....></input> 的html标签,不是编辑框中输入的值。

  解决途径:

  alert getRowData()获取出的数据,你会发现<input>标签的id是5_age, 6_age之类的,也就是行id+“_colModel name”,这就好办了,

  做法就是找到编辑行的单元格的id,然后得到单元格里的内容,通过"setRowData"将其保存起来,然后再通过getRowData()取值。

  示例:

     var selectedId = $('#gridTable').jqGrid("getGridParam", "selrow");

     var ageId = selectedId + "_age";

     var sexId = selectedId + "_sex";   

     var age= $('#'+ageId).val();

     var sex= $('#'+sexId).val();   

   $('#gridTable').jqGrid('setRowData',selectedId,{age:age,sex:sex},''); 

  再通过getRowData()取值,结果正确。