【问题标题】:jqGrid Events problemjqGrid事件问题
【发布时间】:2010-09-27 06:56:14
【问题描述】:

我有一个场景,我必须像保存更改一样进行批量更新,我已经从 jgrid 将更新发送到数据库。

现在,我正在使用数组来存储更新的数据。

在 onafterupdate 事件中,我必须将元素添加到数组中。 onafterupdate 事件不起作用。

请帮帮我。如何使用 onafterupdate 事件。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Layout</title>
    <link rel="stylesheet" href="/Content/css/base.css" />
</head>

<body>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Untitled Page</title>
    <!--<script type="text/javascript">

     var check=$retrivexml;
      alert(check);
      </script>-->
    <link href="../../Content/css/Style/style.css" rel="stylesheet" type="text/css" />
    <link rel="stylesheet" href="../../Content/css/Style/jquery-ui-1.7.2.custom.css"
        type="text/css" media="screen" />
    <link rel="stylesheet" href="../../Content/css/Style/ui.jqgrid.css" type="text/css"
        media="screen" />
    <!--  <link rel="stylesheet" type="text/css" media="screen" href="../../Content/css/Style/jqModal.css" />-->
    <!--<link rel="stylesheet" type="text/css" media="screen" href="../../Content/css/Style/datePicker.css" />-->
    <!--<link href="../../Content/css/Test/jquery-ui.css" rel="stylesheet" type="text/css" />-->
    <!--<link href="../../Content/css/Test/ui.jqgrid.css" rel="stylesheet" type="text/css" />-->

    <script src="../../Content/js/Jgrid js/jquery.js" type="text/javascript"></script>
    <script src="../../Content/js/Jgrid js/grid.locale-en.js" type="text/javascript"></script>
    <script src="../../Content/js/Jgrid js/jquery.jqGrid.min.js" type="text/javascript"></script>
    <!--<script src="../../Content/js/Jgrid js/celledit.js" type="text/javascript"></script>-->
    <script src="../../Content/js/Jgrid js/ui.datepicker.js" type="text/javascript"></script>
    <script src="../../Content/js/Jgrid js/json2.js" type="text/javascript"></script>
    <script src="../../Content/js/Jgrid js/JsonXml.js" type="text/javascript"></script>
    <script src="../../Content/js/Jgrid js/grid.import.js" type="text/javascript"></script>
    <!--<script type="text/javascript" src="../../Content/js/Jgrid js/grid.base.js"></script> 
    <script type="text/javascript" src="../../Content/js/Jgrid js/grid.formedit.js"></script> -->

    <script type="text/javascript">

     jQuery(document).ready( function() {

      var i=3;  
     var grid = jQuery("#test");
            var MyExportToXml = function (grid) {
                var dataFromGrid = {row: grid.jqGrid('getGridParam', 'data') };
                var xmldata = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>\n<rows>\n' +
                              xmlJsonClass.json2xml (dataFromGrid, '\t') + '</rows>';
                alert(xmldata);
            };


    var AddNewRow = function(id){

                      var datarow = {Consultant:"",Role:"",Task:"",SDate:"",EDate:"",
                                       Deliverables:"",Complete:""};
                      var lastsel2 = parseInt(id) + 1;
                      //debugger;
                      var su=jQuery("#test").addRowData(lastsel2, datarow, "last") ;
//                  if (su) { 
//                          jQuery('#test').editRow(lastsel2,true); 
//                     
//                           }  
                      };

     var lastsel3;
     var lastsel;
     jQuery("#test").jqGrid({
        url:'/Content/xml/user.xml',
        //url: <?xml version="1.0" encoding="UTF-8"?><rows><page>aa</page><total>aa</total><records>aa</records><row id='1'><cell>1</cell><cell>False</cell><cell>Development</cell><cell>1-1-0001 0:00:00</cell><cell>1-1-0001 0:00:00</cell><cell>Management</cell><cell>False</cell></row></rows>,
     datatype: "xml",
        colNames:['Consultant','Project Role', 'Task', 'Start Date','End Date','Deliverables','Complete'],
        colModel:[
         {name:'Consultant',index:'Consultant', width:90, editable: true,edittype:"select",editoptions:{value:"K:Kin;R:Rajesh;R:Renee;S:Sandeep"}},
         {name:'Role',index:'Role', width:80, align:"right",editable:true},
         {name:'Task',index:'Task', width:80, align:"right",editable:true},
         {name:'SDate',index:'SDate', width:90,editable:true},
         {name:'EDate',index:'EDate', width:90,editable:true},
         {name:'Deliverables',index:'Deliverables', width:200, sortable:false,editable: true,edittype:"textarea", editoptions:{rows:"2",cols:"25"}},
         {name:'Complete',index:'Complete', width:60, editable: true,edittype:"checkbox",editoptions: {value:"Complete:Incomplete"}}  
        ],

//         onSelectRow:function(id){
//  lastsel=id;
//  //JQuery("#classTable").showCol("class_id"); 
//   
//  var data = jQuery("#test").getRowData(id).Consultant;  
//  alert(data);
//  //jQuery("#classTable").jqGrid('setGridParam',data); 
//  },

        rowNum:10,
        //rowList:[10,20,30],
        pager: '#pagediv',
        sortname: 'id',
        viewrecords: true,
        sortorder: "desc",
        caption:"Project Planning",
     forceFit : false,
     cellEdit: true,
     editurl:'clientArray',
     cellsubmit: 'clientArray',
     height: "100%", 

     ondblClickRow: function(id, iRow, iCol, e) { 
   alert(id);
     //getGridParam("records")
     //alert(selr);
     }, 



      //function(id, iRow, iCol, e) {alert(iRow);}, 

     afterEditCell: function (id,name,val,iRow,iCol){     

        if(name=='SDate') {
       jQuery("#"+iRow+"_SDate","#test").datepicker({dateFormat:"yy-mm-dd"});

      }

     if(name=='EDate') {
       jQuery("#"+iRow+"_EDate","#test").datepicker({dateFormat:"yy-mm-dd"});
      }
     },


    });
    jQuery("#test").jqGrid('navGrid','#pagediv',{edit:false,add:false,del:false}).navButtonAdd('#pagediv', { caption:"Add", buttonicon :'ui-icon-circle-plus', title: "Add New Row",
       onClickButton: function() {debugger;
//       var last = jQuery('#test').jqGrid('getGridParam','records');                      
       var GridIds = grid.getDataIDs();
       var last= GridIds[GridIds.length -1 ];   
               AddNewRow (last);
           }
        });

    //grid[0].onafterupdate;
     grid[1].onafterupdate(function (){debugger;alert("Hellooooo")});

    $("#export").click(function(){
                MyExportToXml (grid);
            });


      });
    </script>

</head>
<body>
    <form id="form1" action="">
        <div align="center">
            <div id="pagediv">
            </div>
            <table id="test">
                <tr>
                    <td />
                </tr>
            </table>
            <input type="button" id="export" value="Export" />
        </div>
    </form>
</body>
</html>


</body>

</html>   

【问题讨论】:

    标签: javascript jquery jquery-plugins jqgrid


    【解决方案1】:

    因为您使用单元格编辑,所以 afterSaveCell 的用法对您的目的来说似乎没问题。

    【讨论】:

    • @Oleg:是否有任何事件会触发编辑行,例如“aftereditRow”。
    • 当我使用双击编辑列时,Calenender 不起作用,因为它在 Aftereditcell 事件上,但我必须在 cellclick 事件上工作..
    • @Sandy:有不同的事件取决于您使用的编辑模式(单元格编辑内联编辑表单编辑)。你使用cellEdit: true,所以单元格编辑。对于单元格编辑,afterSaveCell 是修改单元格后做某事的正确位置。您可以删除cellEdit:true 并调用editRow,例如在插入空行之后直接调用。然后您应该使用succesfuncerrorfuncaftersavefunc(请参阅trirand.com/jqgridwiki/doku.php?id=wiki:inline_editing#editrow)保存数据或删除新的空行以防出错。
    • @Sandy:对于内联编辑函数aftersavefunc是你所需要的。
    • @Oleg:我正在使用 afterSaveCell 事件,但它没有在我的代码中触发。下面是我的代码
    猜你喜欢
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多