2016-06-27 12 views
1

で、モードを追加し、私はこの機能がない編集モードでは、唯一の追加モードで実行することにしたい、しかしeditrules: { custom: true, custom_func: checkforduplicates, required:true }カスタム機能のみ編集モードのために、ではないjqGrid

などjqGridのカスタム機能を持っています。これは可能ですか?

編集: - 下のオレッグからの回答の後、私は以下のコードに変更しました。ただし、アラートは印刷されません。どこが間違っているのか分かりません。

colModel: [ 
      { key: true, name: 'id', editable: false, formatter: 'integer', viewable: false, hidden: true }, 
      { 
       key: false, 
       name: 'name', 
       editable: true, 
       editrules: { 
        required: true, 
        custom: function (options) { 
         // options have the following properties 
         // cmName 
         // cm 
         // iCol 
         // iRow 
         // rowid 
         // mode - "editForm", "addForm", "edit", "add", "cell" and so on 
         // newValue - the value which need be validated 
         // oldValue - the old value 
         // some additional properties depends on the editing mode 
         alert("mode is " + options.mode); 
         if (options.mode === "add") { // "add" for inline editing 
          var grid = $("#grid"); 

          var textsLength = grid.jqGrid("getRowData"); 




          var textsLength2 = JSON.stringify(textsLength); 

          alert("i am here"); 

          var myAttrib = $.map(textsLength, 
           function (item) { return item.name }); 


          var count = 0; 
          for (var k in textsLength) { 
           if (textsLength.hasOwnProperty(k)) { 
            ++count; 
           } 
          } 

          var text, i; 


          for (i = 0; i < count; i++) { 
           text = myAttrib[i]; 
           if (value === text) { 
            return [false, " - Duplicate category name."]; 
           } 
          } 
          return [true, ""]; 
         } 
         return true; 
        } 
       } 
      }, 

答えて

1

無料jqGridはオプションvaluenameiCol新しいスタイル検証と古いスタイルcustom_funcをサポートしています。新しいスタイルの検証いずれかを使用するには、任意のcustom_funcコールバックを指定する必要はありませんが、一つのパラメータでcalback機能としてcustomを定義するには:modeプロパティを形成する追加の検証の場合

editrules: { 
    required: true, 
    custom: function (options) { 
     // options have the following properties 
     // cmName 
     // cm 
     // iCol 
     // iRow 
     // rowid 
     // mode - "editForm", "addForm", "edit", "add", "cell" and so on 
     // newValue - the value which need be validated 
     // oldValue - the old value 
     // some additional properties depends on the editing mode 
     if (options.mode === "addForm") { // "add" for inline editing 
      // do the validation 
     } 
     return true; 
    } 
} 

は、"addForm"に等しく、 options.iRow === -1,options.oldValue === null,options.rowid === "_empty"。他のプロパティ(iRow,oldValue、およびrowid)の値は編集モードによって異なるため、options.modeを使用して空きjqGridの編集(または検索モード)を検出することをお勧めします。

+0

'jqGrid 4.4.4 - jQuery Grid' '無料jqGrid'ですか?上記のカスタム機能を使用すると、内部の警告文が印刷されないためです。 – Chakra

+0

インドは英国の一部ですか?それは時点に依存します。 jqGridのライセンス契約は、2014年末にjqGrid 4.7.1([post](http://www.trirand.com/blog/?p=1438)を参照)の公開から変更されました。 4.7.0のMIT/GPLライセンスに基づいて、私は** freq jqGridという名前で開発した4.7.0のフォーク**をGuriddo jqGrid JSの反対側で開発しました。 ://guriddo.net/?page_id = 103334)。したがって、jqGrid <= 4.7のバージョンは無料ですが、名前 "free jqGrid"は私が開発した製品を意味します。 jqGridの4.xバージョンと互換性がありますが、多くの新機能があります。 – Oleg

関連する問題