データと複数の列(たとえば、列1、2、および3)を含む剣道グリッドがあります。列1、2、3は、互いの値に基づいて編集できる(または編集できないようにする)必要があります。これは行固有です。
たとえば、列1(日付)が列2(日付)未満の場合、列3は編集できません。
列全体を無効または有効にするのは簡単ですが、私の要件は行固有です。したがって、行1で列3を有効にし、行2で列3を無効にすることができます。
何かご意見は?
データと複数の列(たとえば、列1、2、および3)を含む剣道グリッドがあります。列1、2、3は、互いの値に基づいて編集できる(または編集できないようにする)必要があります。これは行固有です。
たとえば、列1(日付)が列2(日付)未満の場合、列3は編集できません。
列全体を無効または有効にするのは簡単ですが、私の要件は行固有です。したがって、行1で列3を有効にし、行2で列3を無効にすることができます。
何かご意見は?
私の提案は、条件を検証するエディター関数を作成することです。もちろん、これにはアドホックソリューションであるという欠点がありますが...それは機能します!
次のエントリ(データソースのデータ)を作成します。
var entries = [
{ id:1, col1: new Date(2012, 11, 31), col2: new Date(2013, 0, 1), col3: "Yes" },
{ id:2, col1: new Date(2013, 0, 1), col2: new Date(2013, 0, 1), col3: "No" },
{ id:3, col1: new Date(2013, 0, 2), col2: new Date(2013, 0, 1), col3: "No" }
];
次に、グリッドを次のように定義します。
var grid = $("#grid").kendoGrid({
dataSource : {
data : entries,
schema : {
model: {
id : "id",
fields: {
col1: { type: "date"},
col2: { type: "date"},
col3: { editable: true }
}
}
},
pageSize: 3
},
columns : [
{ field: "col1", title: "Col1", format: "{0:yyyy-MM-dd}" },
{ field: "col2", title: "Col2", format: "{0:yyyy-MM-dd}" },
{ field: "col3", title: "Edit?", editor: checkAndEdit }
],
editable : "incell",
navigatable: true,
pageable : true
}).data("kendoGrid");
ここcol1
で、col2
は日付であり、が未満の場合にのみcol3
編集できる文字列です。 col1
col2
関数を次のように定義checkAndEdit
します。
function checkAndEdit(container, options) {
if (options.model.col1 < options.model.col2) {
$('<input data-bind="value:' + options.field + '" ' +
'data-format="' + options.format + '" ' +
'class="k-input k-textbox"/>')
.appendTo(container);
} else {
grid.closeCell(container);
}
}
<のinput
場合は対応するフィールドを生成し、それ以外の場合は終了モードを呼び出します。col1
col2
closeCell
edit
ここで実行されているのを見ることができます
単純に使用するだけです(グリッド列にバインドするもの)
[Editable(false)]
public string ob_name { get; set; }
剣道UIグリッドに使用するコスチュームクラスで。
詳細については、こちらもご覧ください。