ورود

View Full Version : بازگشت مقدار Undefined از دستور data(“kendogrid”) در kendo.ui.grid



mohsen_zelzela00
دوشنبه 21 مرداد 1392, 14:37 عصر
با عرض سلام
من به تازگی از کنترل kendo.ui.grid در پروژه های asp.net mvc استفاده می کنم. برای ایجاد grid دستورات زیر را نوشتم


@(Html.Kendo().Grid<BrandViewModel>(Model) .Name("Grid") .Columns(columns => { columns.Bound(p => p.BrandName); columns.Bound(p => p.BrandAbbr); columns.Bound(p => p.SrcImage); columns.Command(command => command.Custom("Edit").Click("editItem")); }) .DataSource(dataSource => dataSource .Ajax() .Read(read => read.Action("CustomCommand_Read", "Brand")) .Model(model => model.Id(p => p.Id)) ) )
من می خواهم زمانی که کاربر بر روی دکمه ویرایش کلیک کرد view مربوط به ویرایش در کنترل kendo.ui.window به صورت popup ظاهر شود و زمانی که کاربر عملیات ویرایش را انجام داد و روی دکمه ذخیره کیک کرد kendo.ui.window بسته بشه و grid اطلاعاتش ریفرش بشه برای این کار کد زیر را نوشتم




@(Html.Kendo().Window().Name("Details") .Title("Customer Details") .Visible(false) .Modal(true) .Height(400) .Draggable(true) .Width(300) .Events(events => events.Close("onClose")) )

<script type="text/x-kendo-template" id="template"> <div id="details-container"> <!-- this will be the content of the popup --> BrandName: <input type='text' value='#= BrandName #' /> </div> </script>


var detailsTemplate = kendo.template($("#template").html()); var windowObject; $(document).ready(function () { windowObject = $("#Details").data("kendoWindow"); }); function editItem(e) { e.preventDefault(); var dataItem = this.dataItem($(e.currentTarget).closest("tr")); windowObject.refresh({ url: "/Brand/Edit/" + dataItem.Id }); windowObject.center().open(); } function onClose(e) { var grid = $("#Grid").data("kendoGrid").dataSource.read(); }

اما وقتی فرم بسته میشه دستور$("#Grid").data("kendoGrid") مقدار Undefined را برمی گرداند و همین باعث می شود که grid ریفرش نشود.

ممنون میشم اساتید محترم راهنمایی کنند.

veronika
چهارشنبه 30 مرداد 1392, 07:45 صبح
سلام
نیازی به custom کردن نیست کافی هست view خودتون را بسازید و سپس ان را در فولدر view-shared-editortemplate اضافه کنید و اون قسمت هم که گرید را تعریف می کنید خط زیر را اضافه کنید که در واقع در قسمت templatename نام ویو را میدهید.با این روش خود گرید بعد از بسته شدن popup ریفرش می شود

.Editable(e => e.Mode(GridEditMode.PopUp).TemplateName("CustomerViewModelTemplates")
.Window(w => w.Title("ویرایش مشتری").Draggable(false)))