JqG​​rid EditForm值未正确加载

时间:2014-09-29 10:08:38

标签: jquery jqgrid

我的JqGrid编辑表单行为有趣。它加载某些行。当我选择编辑时,除了选择标记( srf_sizeremarks

之外,所有值都会在表单中预加载
 var srfgrid = $("#srfArticletbl"); 
    srfgrid.jqGrid({ 
                 datatype: "json",
                 url:"/Myelclass/SrfinsertArticle.do", 
                 mtype: "GET", 
                 autoencode: true,
                 postData: {
                     sampleno: function (){return $("#srf_sampleno").val();},
                 },
                 colNames:['ArticleID','ArticleShForm',....,'Srfarticleid'],  
                 colModel :[  
                            .........
                            //srf_sizeremarks not loading
                             {name:'srf_sizeremarks', index:'srf_sizeremarks', width:40, align:'center',  editable:true, hidden: true, 
                                edittype:'select',
                                editoptions: { 
                                  dataUrl:'/Myelclass/PrfAutocomplete.do?action=sizerem',
                                  type:"GET",
                                  buildSelect: function(data) {
                                    var response = jQuery.parseJSON(data);
                                            var s = '<select style="width: 520px">';
                                            if (response && response.length) {
                                                s += '<option value="0">--- Select Article Type ---</option>';
                                                for (var i = 0, l=response.length; i<l ; i++) {
                                                  var ri = response[i].value;
                                                  s += '<option value="'+ri+'">'+ri+'</option>';
                                                }
                                            }
                                       return s + "</select>";
                                   },
                                 } ,
                                editrules:{edithidden:true},
                                formoptions:{rowpos: 3, colpos: 3}, 
                            },  

编辑表格代码是

//Edit 
      top: 150,
      left: 200,
      width : 750,
      recreateForm: true,
      beforeShowForm: function(formid) { 
          //alert("In Edit Form "); //if i uncomment this it works perfectly
          //Size Calculation
          var sizec = $("#srf_size").val();
          var temp = sizec.indexOf(' ');
          $("#srf_size").val(sizec.substring(0, temp));
          $("#srf_sizeremarks").val(sizec.substring(temp+1));
          $("#tr_srf_price").hide();
      },

      closeAfterEdit: true,
      reloadAfterSubmit: true,

如果我在 beforeShowForm 中添加警告框,则效果非常好。我知道这是无法与alertbox 相关但我想知道我哪里出错了。请点亮一些灯 非常感谢

1 个答案:

答案 0 :(得分:0)

通常'srf_sizeremarks'的值应该已包含需要选择的选择值。我不确定您为什么需要在$("#srf_sizeremarks").val(valueToselect);内使用其他代码beforeShowForm来更改该值。

如果您将editoptionsdataUrl一起使用,则jqGrid首先使用 <select>创建“添加/编辑”表单,并向dataUrl启动异步Ajax请求。因此beforeShowForm可以/将在之前工作<{1}}。所以你不能使用<select>

我认为最简单的方法是修改$("#srf_sizeremarks").val(valueToselect);回调。它使用buildSelect列表构建<select>。您可以将<option>的代码移至beforeShowForm回调,并将buildSelect属性添加到项目selected="selected"。如果ri===sizec.substring(temp+1)列的原始值不等于其中一个选项,则应该解决问题。如果您确实拥有'srf_sizeremarks'列中的原始值,该值等于该选项的值,则会选择该值。

或者你可以包括

'srf_sizeremarks'
setTimeout(function(){ ... // the code from beforeShowForm sould be here $("#srf_sizeremarks").val(valueToselect); // sizec.substring(temp+1) ... }, 50); 内的

。通过这种方式,您将确保在之后选择值,并且选择了{选择',并且选择buildSelect列(如果存在)的原始值之后。所以它也应该有用。