or
@using InnovareClinicianDesktop.Areas.Admin.ViewModels@model InnovareClinicianDesktop.Areas.Admin.ViewModels.CompanyViewModelResults @{ ViewBag.Title = "Details";}<h2>Manage records in the Company table.</h2><div id="example" class="k-content"> @RenderCompanyViewModel()</div><h1>Other options:</h1>@Html.ActionLink("Return to Application Management", "Index", "Home")@helper RenderCompanyViewModel(){ @(Html.Kendo().Grid<CompanyViewModel>(Model.CompanyViewModels) .Name("grid") .Columns(columns => { columns.Bound(p => p.CompanyName).Width(127); columns.Bound(p => p.IsActive).Width(40); columns.Bound(p => p.CreatedDate).Width(80).Format("{0:MM/dd/yyyy}"); columns.Bound(p => p.CreatedBy).Width(80); columns.Bound(p => p.LastModifiedDate).Width(80).Format("{0:MM/dd/yyyy}"); columns.Bound(p => p.LastModifiedBy).Width(80); columns.Command(command => { command.Edit(); command.Destroy(); }).Width(160); }) .ToolBar(toolbar => toolbar.Create()) .Editable(editable => editable.Mode(GridEditMode.PopUp)) .Pageable(pageable => pageable .Refresh(true) .PageSizes(true) .ButtonCount(5)) .Sortable(sortable => sortable .AllowUnsort(true) .SortMode(GridSortMode.MultipleColumn)) .Scrollable() .ClientDetailTemplateId("template") .Resizable(resize => resize.Columns(true)) .Selectable(sel => sel.Mode(GridSelectionMode.Single)) .HtmlAttributes(new { style = "height:530px;" }) .DataSource(dataSource => dataSource .Ajax() .Events(events => events.Error("error_handler")) .Model(model => { model.Id(p => p.CompanyID); model.Field(p => p.CompanyID).DefaultValue(System.Guid.Empty); }) .Create(create => create.Action("EditingPopup_Create", "Company", new { area = "Admin" })) .Read(read => read.Action("EditingPopup_Read", "Company", new { area = "Admin" })) .Update(update => update.Action("EditingPopup_Update", "Company", new { area = "Admin" })) .Destroy(update => update.Action("EditingPopup_Destroy", "Company", new { area = "Admin" })) ) )}<script id="template" type="text/kendo-tmpl"> @(Html.Kendo().TabStrip() .Name("tabStrip_#=CompanyID#") .SelectedIndex(0) .Animation(animation => animation.Open(open => open.Fade(FadeDirection.In))) .Items(items => { items.Add().Text("Users").Content(@<text> @(Html.Kendo().Grid<InnovareClinicianDesktop.Areas.Admin.ViewModels.ApplicationObjectViewModel>() .Name("applicationObject_#=CompanyID#") .Columns(columns => { columns.Bound(u => u.ObjectID).Title("ID").Width(56); columns.Bound(u => u.ObjectName).Width(110); columns.Bound(u => u.ObjectType).Width(30); columns.Bound(u => u.FirstName).Width(190); columns.Bound(u => u.LastName).Width(40); columns.Bound(u => u.EmailAddress).Width(160); columns.Bound(u => u.CreatedDate).Width(80).Format("{0:MM/dd/yyyy}"); columns.Bound(u => u.CreatedBy).Width(160); }) .ToolBar(toolbar => { toolbar.Custom().Text("Manage Users").Name("manageApplications").Action("Index", "ApplicationObject", new { companyID = "#=CompanyID#" }); }) .Pageable(pageable => pageable .Refresh(true) .PageSizes(true) .ButtonCount(5)) .Sortable(sortable => sortable .AllowUnsort(true) .SortMode(GridSortMode.MultipleColumn)) .Scrollable() .Resizable(resize => resize.Columns(true)) .Selectable(sel => sel.Mode(GridSelectionMode.Single)) .DataSource(dataSource => dataSource .Ajax() .PageSize(5) .Read(u => u.Action("ToolbarTemplate_ApplicationObjects", "Company", new { companyID = "#=CompanyID#" })) ) .ToClientTemplate()) </text> ); items.Add().Text("Applications").Content(@<text> @(Html.Kendo().Grid<InnovareClinicianDesktop.Areas.Admin.ViewModels.CompanyApplicationViewModel>() .Name("companyApplication_#=CompanyID#") .Columns(columns => { columns.Bound(a => a.CompanyApplicationID).Title("ID").Width(56); columns.Bound(a => a.ApplicationID).Width(110); columns.Bound(a => a.IsActive).Width(30); columns.Bound(a => a.CreatedBy).Width(160); columns.Bound(a => a.CreatedDate).Width(80).Format("{0:MM/dd/yyyy}"); columns.Bound(a => a.LastModifiedBy).Width(160); columns.Bound(a => a.LastModifiedDate).Width(80).Format("{0:MM/dd/yyyy}"); }) .ToolBar(toolbar => { toolbar.Custom().Text("Manage Applications").Name("manageApplications").Action("Index", "CompanyApplication", new { companyID = "#=CompanyID#" }); }) .Pageable(pageable => pageable .Refresh(true) .PageSizes(true) .ButtonCount(5)) .Sortable(sortable => sortable .AllowUnsort(true) .SortMode(GridSortMode.MultipleColumn)) .Scrollable() .Resizable(resize => resize.Columns(true)) .Selectable(sel => sel.Mode(GridSelectionMode.Single)) .DataSource(dataSource => dataSource .Ajax() .PageSize(5) .Read(a => a.Action("ToolbarTemplate_CompanyApplications", "Company", new { companyID = "#=CompanyID#" })) ) .ToClientTemplate()) </text> ); items.Add().Text("Modules").Content(@<text> @(Html.Kendo().Grid<InnovareClinicianDesktop.Areas.Admin.ViewModels.CompanyModuleViewModel>() .Name("companyModule_#=CompanyID#") .Columns(columns => { columns.Bound(m => m.CompanyModuleID).Title("ID").Width(56); columns.Bound(m => m.IsActive).Width(30); columns.Bound(m => m.CreatedBy).Width(160); columns.Bound(m => m.CreatedDate).Width(80).Format("{0:MM/dd/yyyy}"); columns.Bound(m => m.LastModifiedBy).Width(160); columns.Bound(m => m.LastModifiedDate).Width(80).Format("{0:MM/dd/yyyy}"); columns.Bound(m => m.ModuleID).ClientTemplate("<a href='" + Url.Action("Index", "CompanyModuleAppRole") + "?moduleID=" + "#= item.MethodID #" + "'>Manage Roles</a>").Width(100); }) .ToolBar(toolbar => { toolbar.Custom().Text("Manage Modules").Name("manageModules").Action("Index", "CompanyModule", new { companyID = "#=CompanyID#" }); }) .Pageable(pageable => pageable .Refresh(true) .PageSizes(true) .ButtonCount(5)) .Sortable(sortable => sortable .AllowUnsort(true) .SortMode(GridSortMode.MultipleColumn)) .Scrollable() .Resizable(resize => resize.Columns(true)) .Selectable(sel => sel.Mode(GridSelectionMode.Single)) .DataSource(dataSource => dataSource .Ajax() .PageSize(5) .Read(m => m.Action("ToolbarTemplate_CompanyModules", "Company", new { companyID = "#=CompanyID#" })) ) .ToClientTemplate()) </text> ); }) .ToClientTemplate())</script><script> function dataBound() { this.expandRow(this.tbody.find("tr.k-master-row").first()); }</script><script type="text/javascript"> function error_handler(e) { if (e.errors) { var message = "Errors:\n"; $.each(e.errors, function (key, value) { if ('errors' in value) { $.each(value.errors, function () { message += this + "\n"; }); } }); alert(message); } } function onComplete(e) { if (e.name == "Delete") { var result = e.response.result; if (result == true) $("#Items").data("tGrid").rebind(); else { alert("Error on deleting") } } }</script>Hi
Here's 2 different typed columns. Both have DataField specified
| <telerik:GridBoundColumn DataField="ID" UniqueName="ID" Visible="False" > |
| </telerik:GridBoundColumn> |
| <telerik:GridTemplateColumn DataField="Name" HeaderText="Name" UniqueName="NameColumn"> |
| <ItemTemplate><%# DataBinder.Eval(Container.DataItem, "Name") %></ItemTemplate> |
| <EditItemTemplate> |
| <asp:TextBox ID="tbName" runat="server" SkinID="GeneralTextBox" Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>'></asp:TextBox> |
| </EditItemTemplate> |
| </telerik:GridTemplateColumn> |
| Telerik.Web.UI.GridDataItem dataItem = e.Item as Telerik.Web.UI.GridDataItem; |
| dataItem.SavedOldValues["ID"] //this always have a value |
| dataItem.SavedOldValues["Name"] // this is not exists |
Why 'Name' is not contains in SavedOldValues collection when I use GridTemplateColumn?
I'm forced to do selection from dataset by ID to get original 'Name' value

<telerik:GridTemplateColumn HeaderText="AttachedFile" UniqueName="UploadColumn"><ItemTemplate><telerik:RadListBox runat="server" ID="listBox1"> <ItemTemplate><a href="<%# DataBinder.Eval(Container.DataItem, "Url")%>">Lien <%# DataBinder.Eval(Container.DataItem,"Name")%></a> </ItemTemplate></telerik:RadListBox></ItemTemplate><EditItemTemplate><telerik:RadAsyncUpload runat="server" D="AsyncUpload1" OnFileUploaded="AsyncUpload1_FileUploaded" AllowedFileExtensions="jpg,jpeg,png,gif,pdf" MaxFileSize="1048576" MultipleFileSelection="Automatic"></telerik:RadAsyncUpload></EditItemTemplate>
</telerik:GridTemplateColumn>protected void RadGrid1_BatchEditCommand(object sender, GridBatchEditingEventArgs e) { foreach (GridBatchEditingCommand command in e.Commands) { if ((command.Type == GridBatchEditingCommandType.Update)) { Hashtable newValues = command.NewValues; if (newValues != null) { RadAsyncUpload asyncUpload = RadGrid1.FindControl(RadGrid1.MasterTableView.ClientID + "_UploadColumn").FindControl("AsyncUpload1") as RadAsyncUpload; //Here i need to get files by row or DataKeyNames foreach (var item in asyncUpload.UploadedFiles) { } } } } }
