jqGrid - 默认添加/编辑按钮 - 处理服务器响应

时间:2009-08-05 16:54:29

标签: jqgrid

我正在研究jqGrid的第一次实施。我正在使用navGrid中出现的标准添加/编辑按钮,但是当我在编辑/添加表单中单击“提交”时,我在识别服务器响应的过程时遇到了问题。

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

是否有标准的回调或事件参数我在这方面遗漏了什么?有没有办法定义如何调用saveRow或者是否存在我可以实现的默认成功/错误回调方法?

任何方向都会非常感谢!!!

3 个答案:

答案 0 :(得分: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];
        }

答案 1 :(得分:2)

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

 jQuery("#search_results").jqGrid({
        url: host,
        datatype: "xml", 
        mtype: "GET", // Handy to see the params passed.
        height: 200,
        width: 500,
...
...
etc
        gridComplete: function() {
          var ids = jQuery("#search_results").getDataIDs();
          if (ids.length Empty Result

'); } else { $('#jqgrid_error').hide(); } }, loadError: function(xhr,st,err) { jQuery("#jqgrid_error").html("Type: "+ st +"; Response: "+ xhr.status + " "+xhr.statusText+'

'); } }).navGrid('#search_results_pager', {edit:true,add:false,del:false,search:true}, { afterComplete:processed, // processed is a function you define closeAfterEdit: true, reloadAfterSubmit:true } );

来自文件:

afterComplete 此事件后,立即全部动作和事件都完成 和行被插入或网格中的更新。 afterComplete(serverResponse,POSTDATA,formid)其中

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

gridComplete 之后的所有数据这火灾被装载到格和所有其他 过程完成。

loadError xhr,st,err 如果请求失败时要调用的函数。这个函数会得到 三个参数:XMLHttpRequest对象(XHR),串 描述错误(ST)的种类发生和一个可选的 异常对象(ERR),如果一个发生。

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

答案 2 :(得分: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']
        }