2

更新 カスタム フォーマッタでデータをポイントする際に問題があります。

jqgrid のカスタム フォーマッタを使用しています。

  function myformatter ( cellvalue, options, rowObject )
  {
   ....

現在、私のカスタム フォーマッタは、常に grid の最後の行を指しているようです。実際、rowObject[0]たとえば を取得すると、グリッドの [列 0、最後の行] の値が得られます。なんで?

グリッドのデータは正しくコンパイルされており、Json オブジェクトの内容を確認済みです。

これが私のカスタムフォーマッタです:

         ......
         { name: 'act', index: 'Detail', width: 50, sortable: false, search: false,
              formatter: function (cellvalue, options, rowObject) {
                  i = options.rowId;

                  var tst = '<a class="nau" name="nau" onClick="alert(i);return false;" href="#"></a>';
                  var det = '<a class="det" name="det" onClick="alert(this.name);return false;" href="#"></a>';
                  return tst + det;
              }
          }
         ....

アップデート

必要な文字列を直接返すとフォーマッタが正常に動作することに気付きました (たとえば、正常にreturn rowObject[0]動作します)。変数を使用すると問題が発生します。さらに、やろうとすると、存在しないonclick=alert(rowObject[0])という例外が発生します。rowObjectこれが問題だと思います。 を設定t = rowObject[0]すると、フォーマッタはt行ごとに更新するのではなく、静的変数として使用します。を設定した場合も同じですがi = options.rowIdi静的なままです...なぜですか?どうすればいいですか?

4

2 に答える 2

2

私はそれを機能させることに成功しました...私は少し恥ずかしい思いをしていると言わなければなりません...それはばかげた間違いでした. とにかく、私のような経験の浅い人を助けることができれば幸いです。引用符の外に変数を入れませんでした:

      ......
     { name: 'act', index: 'Detail', width: 50, sortable: false, search: false,
          formatter: function (cellvalue, options, rowObject) {
              i = options.rowId;

              var tst = '<a class="nau" name="nau" onClick="alert('+i+');return false;" href="#"></a>';
              var det = '<a class="det" name="det" onClick="alert(this.name);return false;" href="#"></a>';
              return tst + det;
          }
      }
     ....

@Oleg からの貴重なヘルプを引用します。「コードはonclick個別に実行されるため、名前ではなく変数の値を使用する必要があります。たとえば'onclick="alert(rowObject[0]);return false;"'、グローバル配列 rowObject が存在しないため、エラーが発生します。コードを変更する必要があります。'onclick="alert(' + rowObject[0] + ');return false;"'の値をコードに配置するために使用rowObject[0]します。"

于 2012-02-27T09:20:32.353 に答える
1

グリッドの塗りつぶしに問題があると思います。がすべての行で同じである場合、グリッドが常に 1options.rowIdである間違ったデータで埋められます。id

コード内の間違った場所をローカライズしない場合は、使用するコードとテスト データを含める必要があります。

さらに、代わりにonclickonClickを使用する必要があります。現在のコードは今でも機能しますが、DOCTYPE を変更してもそれ以上の作業は必要ありません。

于 2012-02-26T19:24:13.650 に答える