0

編集目的で元のセル値を保持しながら、別のものを表示することは可能ですか?

私のjqGridの列の1つは「列挙された」データです。編集のために、私は edittype: select + editoptions: enum-key:labelセットを提供しています。これにより、選択エディターが適切に表示されます。ただし、編集だけでなく、通常のビューではenum-keyの代わりにラベルを表示したいと思います。カスタムセルフォーマッタを使用できることはわかっていますが、実際の値変更される可能性があるため、行を編集する前にキーとラベルのペアを再度検索する必要があります...

4

1 に答える 1

1

コードを見ずに言うのは難しいですが、カスタムフォーマッターを使用する必要はなく、ドキュメントformatter: 'select'に示されているように使用するだけです。具体的には、「データにはキー(「1」または「2」)が含まれている必要がありますが、値(「1」または「2」)はグリッドに表示されます」と記載されています。

出力をさらに制御する必要がある場合のもう1つのオプションbuildSelectは、editoptionsのオプションを使用することです。たとえば、これは私がコードに持っている選択ですが、他の例もあります。もちろん、任意のデータを返し、必要に応じてそれを操作して選択を構築できるという考え方です。次に、データイベント変更機能は、入力フィールドに正しい値が設定されていることを確認します。

{ name: 'Id', index: 'Id', editable: true, hidden: true,  
     editoptions: { defaultValue: row_id,
                    dataUrl: "DataService.asmx/GetList",
                    buildSelect: function (data) {
                                 var s = '<select>';
                                 if (data && data.d) {
                                    //data is nested, so we need a few steps to get to the actual data
                                    var list = data.d;
                                    var opts = JSON.parse(list);
                                    var subList = opts.List;
                                    //loop through the data to build the options list
                                    for (var i = 0, l = subList.length; i < l; i++) 
                                        {   var ri = subList[i]; 
                                            s += '<option value=' + ri.Id + '>' + ri.Name + '</option>';
                                        }
                                  }
                                  else {
                                     s+= "<option value=0>No data to display</option>";
                                  }
                                  return s + "</select>"; 
                            } ,
                      dataEvents: [
                              { type: 'change',
                                fn: function (e) {
                                        $('input#Id').val(this.value);
                                }
                              }
                              ]

                     },
       editrules:  {edithidden: true},
       edittype: 'select' 

}

于 2011-12-20T15:52:38.033 に答える