2014-09-29 94 views
0

我的JqGrid编辑窗体行为有趣。它加载某些行。当我选择编辑,所有的值获得预装除了一个选择标签的形式(srf_sizeremarksJqGrid EditForm值未正确加载

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, 

如果我在添加alertbox beforeShowForm它完美的作品。我知道这是无处与alertbox无关,但我想知道我出错的地方。请扔一些灯。
很多谢谢

回答

0

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

如果使用editoptionsdataUrl然后jqGrid的第一个创建添加/编辑形式<select>并开始异步Ajax请求dataUrl。所以beforeShowForm可以/将工作之前<select>将填补。所以你不能使用$("#srf_sizeremarks").val(valueToselect);

我认为最简单的方法是修改buildSelect回调。它建立<select><option>名单。如果ri===sizec.substring(temp+1)可以将beforeShowForm的代码移动到buildSelect回调并将selected="selected"属性添加到该项目。如果来自'srf_sizeremarks'列的原始值不等于其中一个选项,它应该解决问题。如果确实有'srf_sizeremarks'列中的原始值等于该选项的值,那么它将被选中。

另外,您可以包括

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

buildSelect内。通过这种方式,您可以确定在之后,您将选择值,并选择'srf_sizeremarks'列(如果存在)的原始值。所以它也应该工作。

+0

非常感谢您的回复,对于迟到的回复感到抱歉。从你答案的第二段,我明白我出错的地方。将检查并回复给你 – Wahab 2014-10-03 08:25:24

+0

@Wahab:不客气!我很有兴趣知道你选择哪种方式以及哪一种方法可以解决你的问题。 – Oleg 2014-10-03 08:30:48