Я пытаюсь передать данные строки Kendo Grid в частичный вид, отображаемый во всплывающем окне Kendo.
В частичном виде файл изображения может быть загружен для записи строки.Эта часть асинхронна и отделена от редактирования строки.У меня есть загрузка и сохранение изображения, но мне нужно получить идентификатор строки, чтобы я мог сохранить файл изображения для этой записи.
Кроме того, мне нужно передать данные изображения в частичное представлениеи отобразить его позже, когда они появятся.
Как передать данные в частичное представление (всплывающее окно Kendo) из Kendo Grid совершенно на стороне клиента, поскольку данные ужев сетке кендо dataSource
?
JS:
$("#manageLostPropertiesGrid").kendoGrid({
dataSource: lostPropertyDataSource,
pageable: true,
height: 550,
toolbar: ["create"],
columns: [
{
command: { text: "View", click: showPhoto },
title: "Photo",
filterable: false, sortable: false, width: 100,
},
{ field: "PropertyName", title: "Property Name", width: "150px" },
{ field: "CategoryName", title: "Category", editor: propertyCategoryList, width: "150px" },
{ field: "PropertyDescription", title: "Description", width: "200px" },
{
field: "FoundDate", type: "date", title: "Found Date", format: "dd/MM/yyyy",
template: "#= kendo.toString(kendo.parseDate(FoundDate, 'dd-MM-yyyy'), 'dd/MM/yyyy') #", width: "130px"
},
{ field: "FoundLocation", title: "Found Location", width: "120px" },
{ command: ["edit", "destroy"], title: " ", width: "250px" }],
editable: "popup"
}).data("kendoGrid");
// Pop-up window for photo view/upload
wnd = $("#photo-window")
.kendoWindow({
content: {
url: "ImageUploader",
},
title: "Image Uploader",
modal: true,
visible: false,
resizable: true,
width: 750,
height: 500
}).data("kendoWindow");
photoTemplate = kendo.template($("#template").html());
function showPhoto(e) {
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
wnd.center().open();
}
Частичное представление:
<div id="example" class="k-content">
<div class="demo-section k-content wide">
<div class="wrapper">
<div id="products"></div>
<div class="dropZoneElement">
<div class="textWrapper">
<p>Add Image</p>
<p class="dropImageHereText">Drop image here to upload</p>
</div>
</div>
</div>
</div>
<input name="files" id="files" type="file" />
<script type="text/x-kendo-template" id="template">
<div class="product"></div>
</script>
<script>
$(function () {
var template = kendo.template($("#template").html());
var initialFiles = [];
$("#products").html(kendo.render(template, initialFiles));
$("#files").kendoUpload({
async: {
saveUrl: "save?id=" + "1",//Need the row Id here
removeUrl: "remove",
autoUpload: true
},
multiple: false,
validation: {
allowedExtensions: [".jpg", ".jpeg", ".png", ".bmp", ".gif"]
},
success: onSuccess,
dropZone: ".dropZoneElement"
});
function onSuccess(e) {
if (e.operation == "upload") {
var file = e.files[0].rawFile;
if (file) {
var reader = new FileReader();
reader.onloadend = function () {
$("#products").empty().append("<div class='product'><img src=" + this.result + " /></div>");
};
reader.readAsDataURL(file);
}
}
if (e.operation == "remove") {
$("#products").empty();
}
}
});
</script>