私は現在kendo ColorPalette
をグリッドのインライン編集で使用しようとしています。私はかなり選択した色の値をコントローラに投稿するのが難しいということを除いて、すべてを理解しました。剣道ColorPaletteがコントローラに値を掲示していません
剣道グリッド:
$("#ContactTagsGrid").kendoGrid({
dataSource: new kendo.data.DataSource({
transport: {
read: {
url: "/Admin/Tag/GetTagsByOrg",
dataType: "json",
data: {
orgId: OrganizationId
}
},
create: {
url: "/Admin/Tag/Create",
dataType: "json",
type: "POST",
data: function() {
return kendo.antiForgeryTokens();
}
}
},
schema: {
model: {
id: "Id",
fields: {
Id: { type: "number", nullable: true },
OrgId: { type: "number" },
Name: { type: "string" },
Color: { type: "string", defaultValue: "#f20000", validation: { required: true } }
}
}
},
pageSize: 20
}),
pageable: true,
sortable: true,
filterable: {
extra: false
},
scrollable: false,
columns: [
{
field: "Id",
hidden: true
},
{
field: "Name"
},
{
field: "Color",
editor: colorEditor,
template: function(dataItem) {
return "<div style='width: 25px; background-color: " + dataItem.Color + ";'> </div>";
},
width: "500px"
},
{
command: [
{
name: "Edit",
template:
"<a href='\\#' class='small btn btn-link k-grid-edit edit-text'><span class='fa fa-pencil'></span>Edit</a>",
text: "",
className: "fa fa-pencil"
},
{
template:
"<a href='\\#' class='small btn btn-link danger delete-text k-grid-delete'><span class='fa fa-trash-o'></span>Delete</a>",
name: "Delete",
text: " Delete",
className: "fa fa-trash-o"
}
],
width: "170px"
}
],
editable: {
mode: "inline",
destroy: false // don't use the kendo destroy method since we're using bootbox
},
// Custom save/cancel buttons
edit: function (e) {
var command = e.container.find("td:last");
command.html("<a href='\\#' class='small btn btn-primary k-grid-update'>Save</a><a href='\\#' class='small btn btn-default k-grid-cancel' style='margin-left: 5px'>Cancel</a");
}
});
JavascriptがKendo ColorPalette
でデフォルトのグリッドインラインエディタを交換する:
function colorEditor(container, options) {
// create an input element
var div = $("<div></div>");
var input = $("<input />");
input.attr("name", "Color");
// append it to the container
div.appendTo(container);
input.appendTo(div);
// initialize a Kendo UI ColorPicker
div.kendoColorPalette({
palette: [
"#f20000", "#c60000", "#337a00"
],
columns: 3,
change: function() {
var color = this.value();
$("input[name=Color]").val(color);
}
});
}
を私はSave
ボタンをクリックして、私に掲載されている値のみコントローラはName
とOrgId
です。
上記のコードのように、私のモデルのスキーマにdefaultValue
を設定した場合、別の色を選択した場合でもデフォルト値Color
が常に表示されます。
defaultValue
をスキーマに設定しないと、Color
の値はnull
です。
基本的には、コントローラに投稿するときにモデルが正しく更新されるようにする必要があります。私は新しい色を選択するたびに入力<input name="Color" />
の値が正しく更新されているのがわかりますが、実際にはその値が含まれているわけではありません。私は私が私の問題を解決する助けSO上this質問渡ってつまずいてしまった
public class TagCreateViewModel
{
public int OrgId { get; set; }
public string Name { get; set; }
public string Color { get; set; }
}
剣道カラーピッカーを避ける理由はありますか?また、グリッドは、行のコントロールではなく、データ項目をコントローラにポストします。入力するには、行データ項目を入力にバインドする必要があります。 – Failwyn
@Failwyn私はカラーピッカーよりもカラーパレットの方が好きなので、私はそれを使っています。しかし、ええ、私はもう少し研究をし、私の問題を解決するのに役立つ別の答えを見つけました。あなたは正しいですが、行データを入力にバインドする必要があります。ありがとう! – Quiver