현재 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");
}
});
자바 스크립트는 Kendo ColorPalette
와 기본 그리드 인라인 편집기 대체 : 나는 Save
버튼을 클릭하면
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);
}
});
}
유일한 값에 게시됩니다 내 컨트롤러는 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