14

我正在研究我的第一个jqGrid实现。我正在使用出现在 navGrid 中的标准添加/编辑按钮,但是当我在编辑/添加表单中单击提交时,我无法识别如何处理服务器响应。

.navGrid("#product-codes-footer",{edit:true,add:true,del:false},
{afterShowForm:afterShowEdit}, {afterShowForm:afterShowAdd} );

我在某处缺少标准回调或事件参数吗?有没有办法定义如何saveRow调用或者我可以实现默认的成功/错误回调方法?

任何方向将不胜感激!!!

4

3 回答 3

15

似乎有几个事件参数我未能完全阅读和理解......

API --> http://www.trirand.com/jqgridwiki/doku.php?id=wiki:form_editing#editgridrow

使用 afterSubmit 和 afterComplete 的事件参数允许我处理服务器响应并更新表单。

- 担

编辑 这是使用的代码示例...

.navGrid(
        "#product-codes-footer",
        {edit:true,add:true,del:false}, 
        {
            afterShowForm:afterShowEdit, 
            afterSubmit:processAddEdit,
            beforeSubmit:validateData,
            closeAfterAdd: true,
            closeAfterEdit: true
        }, 
        {
            afterShowForm:afterShowAdd, 
            afterSubmit:processAddEdit,
            beforeSubmit:validateData,
            closeAfterAdd: true,
            closeAfterEdit: true
        } 
);
function afterShowEdit(formId) {

            //do stuff after the form is rendered
        }
        function afterShowAdd(formId) {

            //do stuff after the form is rendered
        }
        function processAddEdit(response, postdata) {
            var success = true;
            var message = ""
            var json = eval('(' + response.responseText + ')');
            if(json.errors) {
                success = false;
                for(i=0; i < json.errors.length; i++) {
                    message += json.errors[i] + '<br/>';
                }
            }
            var new_id = "1";
            return [success,message,new_id];
        }
于 2009-08-05T17:27:39.950 回答
2

我见过有几种方法可以做到这一点:

jQuery("#search_results").jqGrid({
        网址:主机,
        数据类型:“xml”,
        mtype: "GET", // 方便查看传递的参数。
        身高:200,
        宽度:500,
...
...
ETC
        网格完成:函数(){
          var ids = jQuery("#search_results").getDataIDs();
          if (ids.length 空结果

'); } 别的 { $('#jqgrid_error').hide(); } }, 加载错误:函数(xhr,st,err){ jQuery("#jqgrid_error").html("类型:"+ st +"; 响应:"+ xhr.status + " "+xhr.statusText+'

'); } }).navGrid('#search_results_pager', {编辑:真,添加:假,删除:假,搜索:真}, { afterComplete:processed, // 处理的是你定义的函数 closeAfterEdit:真, 重新加载后提交:真 } );

从文档中:

afterComplete 在完成所有操作和事件并且在网格中插入或更新行后立即触发此事件。 afterComplete(serverResponse, postdata, formid) 在哪里

  • response 是从服务器返回的数据(如果有)
  • postdata 一个数组,是发送到服务器的数据  
  • formid 是表单的 id  

gridComplete 在所有数据加载到网格中并且所有其他过程都完成后触发。

loadError xhr,st,err 请求失败时调用的函数。该函数获得三个参数:XMLHttpRequest 对象 (XHR)、描述发生的错误类型 (st) 的字符串和一个可选的异常对象 (err)(如果发生)。

有一个方便/有用的 PDF 文档(有点过时): http://www.scribd.com/doc/17094846/jqGrid

于 2009-08-27T06:21:39.150 回答
1

你可以试试这个:

navGrid('#gridpager',{view:true},{},{closeOnEscape:true},{afterSubmit:processAddEdit}); 
        $.jgrid.search={
        odata : ['equal', 'not equal', 'less', 'less or equal','greater','greater or equal', 'begins with','does not begin with','is in','is not in','ends with','does not end with','like','does not contain'],        
          sopt:['eq','ne','cn','bw','ew']
        }
于 2011-04-04T07:23:21.930 回答