Мне нужна помощь в использовании представления списка пользовательского интерфейса Kendo, которое находится в шаблоне сведений о строке сетки. вот что я сделал до сих пор.
<div id="grid">
</div>
<script type="text/x-kendo-template" id="gridDetailTemplate">
<div class='grid-edit'>
<div class='edit-list'></div>
</div>
</script>
<script type="text/x-kendo-template" id="editItemtemplate">
<div class='edit-Item'>
#if(Type=='string'){#
<ul><li><b>#:Name#</b></li><li><input class='inputString' value='#:DataVal()#'/></li></ul>
#}else if(Type=='number'){#
<ul><li><b>#:Name#</b></li><li><input class='inputNumber' data-role='numerictextbox' data-type='number' value='#:DataVal()#'/></li></ul>
#}else if(Type=='date'){#
<ul><li><b>#:Name#</b></li><li><input class='inputDate' data-role='datepicker' value='#:kendo.toString(DataVal(),'MM/dd/yyyy')#'/></li></ul>
#}else if(Type=='boolean'){Name #<input type='checkbox'/>
#}#
</div>
</script>
<script type="text/javascript">
$(document).ready(function () {
$.get("http://localhost:4916/DataAttribute", function (data, status) {
var selFields = new Object();
$.each(data, function (index, elem) {
selFields[elem.Name] = new Object();
selFields[elem.Name]["type"] = elem.Type;
});
$("#grid").kendoGrid({
dataSource: {
type: "json",
transport: {
read: { url: "http://localhost:4916/Deal",
dataType: "json"
}
},
schema: {
data: "Data", total: "Total",
model: {
fields: selFields
}
}
},
height: 430,
filterable: true,
sortable: true,
pageable: false,
detailTemplate: kendo.template($("#gridDetailTemplate").html()),
detailInit: detailInit,
columns: [{
field: "SecurityName",
title: "Security Name",
width: 250
},
{
field: "DateOfAcquisition",
title: "Date Of Acquisition",
width: 120,
format: "{0:MM/dd/yyyy}"
}, {
field: "Acres",
title: "Acres",
width: 120
}
]
});
});
});
function detailInit(e) {
$.get("http://localhost:4916/DataAttribute", function (data, status) {
var detailRow = e.detailRow;
detailRow.find(".edit-list").kendoListView({
dataSource: {
data: data,
schema: {
model: {
DataVal: function () {
switch (this.get("Type")) {
case "number"
}
if (e.data[this.get("Name")])
return e.data[this.get("Name")];
else
return '';
}
}
}
},
template: kendo.template($("#editItemtemplate").html())
});
});
}
</script>
Мой код получает список динамических полей и привязывает его к источнику данных для сетки. Затем в событии detailInit я нахожу элемент div внутри строки и преобразовываю его в список пользовательского интерфейса кендо, для которого был создан шаблон.
Теперь, когда я использую data-bind="value: DataVal()"
, он не получает значения источника данных List. Это работает так, как я сделал, т.е. value="#: DataVal() #"
. Но роль данных не преобразует поля в указанные типы, которые в моем случае являются средством выбора даты и числовым вводом.
Я считаю, что неиспользуемая роль данных вызвана той же проблемой, что и привязка данных, не прочитанная.
Может ли кто-нибудь помочь мне с этим? Кроме того, не стесняйтесь предлагать любые альтернативные способы и общие улучшения кода. Я разработчик ASP.NET и обычно не работаю с чистым html и javascript.
PS: Я был бы рад предоставить контекст того, чего я пытаюсь достичь здесь, если кому-то интересно.
Заранее спасибо.