2016-09-04 14 views
1

無料jqgridは、作成後に列テンプレートを適用するためにallwではありません。 私は列にクリックした場合、アラートボックスが表示されない jqgridが作成された後に列テンプレートを適用する方法

var newOrderPriceTemplate = { 
    align: "center", 
    formatter: "showlink", 
    formatoptions: { 
     onClick: function() { alert('clicked'); } 
    } 
    }; 

    $(function() { 
     ... code to create jqgrid into $grid 
     $grid.jqGrid('setColProp', 'Hind', { 
     template: newOrderPriceTemplate, 
     search: false 
    }); 
    }); 
を試してみました。 search:falseは、検索フィールドを適切に削除して、setColPropが実行されるようにします。

jqgridが作成された後で表示される前に、newOrderPriceTemplateを適用する方法。 作成時にテンプレートがcolModelで指定されている場合、それは機能します。

最新の無料jqgrid、jquery、bootstrap 3、aps.net mvc4、.net 4.6が使用されています。

答えて

1

テンプレートの仕組みが誤解されていると思います。テンプレートは、$.extendで現在のいくつかのプロパティーをcolModelからテンプレートの別のオブジェクトと組み合わせるのに使用される設定のリストです。

無料のjqGridコードのthe code fragmentを読むことをお勧めします。簡略化した形でコードが言い換えれば

for (iCol = 0; iCol < p.colModel.length; iCol++) { 
    p.colModel[iCol] = $.extend(true, {}, 
     p.cmTemplate, 
     p.colModel[iCol].template || {}, 
     p.colModel[iCol]); 
} 

ように見えるjqGridはcolModelの性質を有するカラムのcmTemplatetemplateプロパティの値を組み合わせます。 jqGridはグリッドの作成の最初にを行います。したがって

あなたはグリッドが作成された後、あなたは、あなただけの拡張(および上書き)するために、手動で$.extendを使う必要がある、を適用する必要があるいくつかのテンプレート(例えばnewOrderPriceTemplate)、既存の性質を持っている場合:

var p = $grid.jqGrid("getGridParam"); 

p.colModel[p.iColByName.Hind] = $.extend(true, {}, 
    p.colModel[p.iColByName.Hind], // old values 
    newOrderPriceTemplate,   // the applied template 
    { search: false }    // one more setting to apply 
); 

の後にの新しいプロパティを配置することは、現在の設定をp.colModel[p.iColByName.Hind]から上書きできるようにすることが重要です。

+0

ありがとうございます。テンプレートプロパティが設定されている場合に自動的に適用されるようにsetColPropを変更することは合理的ですか? – Andrus

+0

@Andrus:あなたは大歓迎です!まず最初に、あなたの現在のコードがうまくいかない理由を*説明したかったのです。必要に応じて 'setColProp'を使うことができますが、' setColProp'のコード([here](https://github.com/free-jqgrid/jqGrid/blob/v4.13.4/js/grid.custom.js #L44-L55))は大抵の場合、$ .extend(true、p.colModel [p.iColByName [colname]]、obj);という行から構成され、直接使用することができます。さらに、あなたは 'newOrderPriceTemplate' **と**' {search:false} 'の2つの**セットのプロパティを適用したいと思っていました。したがって、複数のパラメータで1つの '$ .extend'を使用する方が、わかりやすくわかりやすいようです。 – Oleg

関連する問題