2012-02-18 7 views
0

jqGridプラグインを使用しています。グリッドとサブグリッドがオンになっています。 2番目の時間をクリックしてメイングリッドから行を編集すると、フィールドに間違った値が設定されます。 詳細な再現手順:jqGrid編集フォームが間違った値でプリフィルされます。 (2回目にクリック)

  1. クリックして編集行(メイングリッド行)
  2. 正しく読み込ま編集フォーム、OK(最初の画面を参照)
  3. クリック
  4. もう一度ボタン
  5. クリックして編集行を「キャンセル」ここで間違った人口
  6. 編集フォーム(2番目の画面を参照)

は私のコードです:

$(function() { 
     $("#list").jqGrid({ 
      url: 'Country/CountryListPaged', 
      editurl: "Country/AddEditDeleteCountry", 
      datatype: "json", 
      mtype: 'POST', 
      colModel: [ 
          { name: 'idCountry', index: 'idCountry', label: 'Id', width: 100, editable:true, hidden:true }, 
          { name: 'code', index: 'code', label: 'Код', width: 200, align:'center', editable: true, edittype:'text', editrules:{ required:true} }, 
          { name: 'title', index: 'title', label: 'Название', width: 300, align: 'center', editable: true, edittype: 'text', editrules: { required: true} } 
         ], 
      pager: '#pager', 
      rowNum: 10, 
      rowList: [10, 20], 
      sortname: 'Title', 
      sortorder: 'desc', 
      viewrecords: true, 
      gridview: true, 
      caption: 'Список стран', 
      height: 'auto', 
      autowidth: true, 
      scrollOffset: 0, 
      hidegrid: false, 
      subGrid: true, 
      subGridRowExpanded: function (subgridId, rowId) { 
       var subgridTableId, pagerId; 
       subgridTableId = subgridId + "_t"; 
       pagerId = "p_" + subgridTableId; 
       var tmp = $("#list").getRowData(rowId); 
       var idCountry = tmp.idCountry; 
       var countryCode = tmp.code; 

       $("#" + subgridId).html("<table id='" + subgridTableId + "' class='scroll'></table><div id='" + pagerId + "' class='scroll'></div>"); 
       jQuery("#" + subgridTableId).jqGrid({ 
        url: "Country/CountryTranslateVariantsList?idCountry=" + idCountry + "&countryCode=" + countryCode, 
        editurl: "Country/AddEditDeleteCountryTranslateVariant", 
        mtype: "POST", 
        datatype: "json", 
        colModel: [{ name: "idCountryTranslate", index: "IdCountryTranslate", editable: true, hidden: true }, 
           { name: "countryTranslateCode", index: "countryTranslateCode", editable: true, hidden: true, edittype: "text", editoptions: { defaultValue: countryCode} }, 
           { name: "language", index: "Language", label: "Язык", width: 100, editable: true, edittype: "select", editoptions: { value: "en:en;ru:ru;fr:fr;de:de" }, editrules: { required: true} }, 
           { name: "countryTranslateTitle", index: "countryTranslateTitle", label: "Название", width: 180, editable: true, editrules: { required: true}}], 
        rowNum: 5, 
        pager: pagerId, 
        sortname: 'language', 
        sortorder: "asc", 
        viewrecords: true, 
        gridview: true, 
        height: '100%' 
       }); 
       //SUB GRID NAVIGATION PANEL 
       jQuery("#" + subgridTableId).jqGrid('navGrid', "#" + pagerId, 
                 { edit: true, add: true, del: true, search: false, refresh: false }, 
                 {mtype: "POST", closeAfterEdit: true, reloadAfterSubmit: true }, //edit parameters 
                 {mtype: "POST", closeAfterAdd: true, reloadAfterSubmit: true }, //add parameters 
                 {mtype: "POST", reloadAfterSubmit: true, serializeDelData: function (postdata) { 
                  var rowdata = $("#" + subgridTableId).getRowData(postdata.id); 
                  return { oper: postdata.oper, idCountryTranslate: rowdata.idCountryTranslate }; 
                 } 
                }, //delete parameters 
                 {}//search parameteres 
                 ); 
      } 
     }); 
     //MAIN GRID NAVIGATION PANEL 
     jQuery("#list").jqGrid('navGrid', "#pager", 
        { edit: true, add: true, del: true, search: false, refresh: true }, 
        { mtype: "POST", closeAfterEdit: true, reloadAfterSubmit: true }, //edit parameters 
        {mtype: "POST", closeAfterAdd: true, reloadAfterSubmit: true }, //add parameters 
        {mtype: "POST", reloadAfterSubmit: true, serializeDelData: function (postdata) { 
         var rowdata = $("#list").getRowData(postdata.id); 
         return { oper: postdata.oper, idCountry: rowdata.idCountry }; 
        } 
       }, //delete parameters 
        {}//search parameteres 
        ); 
    }); 
</script> 
<div style="margin:10px auto auto auto;width:100%;height:100%;"> 
    <table id="list"> 
     <tr> 
      <td/> 
     </tr> 
    </table> 
    <div id="pager"></div> 

enter image description here

enter image description here

+1

この問題は、投稿した情報では再生できません。 [here](http://www.ok-soft-gmbh.com/jqGrid/Yara.htm)を参照してください。テストデータを追加で転記する必要があります。 – Oleg

+0

あなたはjsonを意味しますか?はい、メイングリッドの場合、次のjson {"page":1、 "total":1、 "records":2、 "rows":[{"cell": "" 8 "、" ukr " "Украина"]}、{"cell": "" 9 "、" rus "、" Russia "}}}}、サブグリッドには次のjsonがあります。{" page ":1、" total " "レコード":3、 "行":["セル":["21"、 "ukr"、 "ru"、 "Украина"]}、{"セル":["22"、 "ukr"ウクライナ]]}} – Yara

答えて

0

私はその理由を見つけました。 "grid.subgrid.js"ファイルが含まれており、問題が発生しました。オレグ、お返事ありがとうございます。

+1

私はあなたを助けることができると私はうれしく思います。どういたしまして! – Oleg

関連する問題