1

名前と給与の2つの列を持つグリッドパネルがあるとします。対応するストアのdataIndexは同じ名前です。

extjsでは、レンダラー関数は次のようになります。

function(value, metaData, record, rowIndex, colIndex, store){}

さて、プロパティの名前に基づいてランダラーを呼び出すときに、別のレンダリングを実行したい場合は、どうすればよいですか?例えば。

function(value, metaData, record, rowIndex, colIndex, store){
if (record.name == 'Salary'|| record.id == 'Salary')
{
//render logic
}
else if (record.name == 'Name'|| record.id == 'Name'){
  //different render logic
}
}

これの正しい構文は何ですか?

4

1 に答える 1

1

まあ、構文的には正しいです。ただし、ifステートメントの条件は正しくありません。変数はvalueレンダリングされる値を保持するため、それをチェックする必要がある場合は、if条件がかなり単純である必要があります。

あなたの場合、あなたは給与または名前をレンダリングしようとしていますか?変数はrecordレコード全体を保持します。フィールドはありませんrecord.name。レコードオブジェクトは、次のフィールドを保持します。

  1. data->データを含むオブジェクトです。(これを使用する必要があります)
  2. id->レコードのID。これはidPropertyあなたの店で指定されています
  3. json->json形式のデータ
  4. ストア->あなたのストア自体
  5. プロトタイプ->プロトタイプ

したがって、比較とチェックを行う場合は、を使用する必要がありますrecord.data.<property-name>

あなたの場合、名前と給与の両方に単一のdataIndexがあるため、コードは次のようになります。

function(value, metaData, record, rowIndex, colIndex, store) {

    if(record.data.property == Name) {
            //render logic for name
    }
    else if(record.data.property == Salary) {
            // render logic for salary
    }
}

そして最後に、この関数は列のレンダラープロパティに入ります。

于 2011-03-12T05:52:45.507 に答える