or
<div style="width:800px;font-size:x-small; padding-top:40px;">@(Html.Kendo().Grid<DRS2014.Models.PathAccountCode>() .Name("GridRules") .Columns(columns => { columns.Bound(e => e.Id); columns.Bound(e => e.Debtors_Account_Code).Title("Debtors<br/>Account<br/>Code"); columns.Bound(e => e.Email).Width(100); columns.Bound(e => e.EmailConfirmed).Title("Email<br/>Confirmed?").Width(40); columns.Bound(e => e.BackingReportFormat).Title("Report<br/>Format"); columns.Bound(e => e.BackingReportType).Title("Report<br/>Type"); columns.Bound(e => e.InvoiceType).Title("Invoice<br/>Type"); columns.Command(command => { command.Edit().Text(" "); }).Width(80); }) .Sortable() .Pageable() //.Scrollable() .ClientDetailTemplateId("detailsTemplate") //.HtmlAttributes(new { style = "height:430px;" }) .DataSource(dataSource => dataSource .Ajax() .Model(m=>m.Id(p=>p.Id)) .PageSize(10) .Read(read => read.Action("GetPathAccounts", "Admin")) .Create(create=>create.Action("InsertPathAccount","Admin")) .Update(update=>update.Action("UpdatePathAccount","Admin")) .Destroy(delete=>delete.Action("DeletePathAccount","Admin")) ) .Events(e=>e.Edit("onEdit")) .ToolBar(commands=>commands.Create()) .Editable(editable=>editable .Mode(GridEditMode.PopUp)) .Filterable()) <br /></div><script id="detailsTemplate" type="text/kendo-tmpl"> @(Html.Kendo().Grid<DRS2014.Models.PathAccountCust>() .Name("Data_#=Id#") //.Events(e=>e.Edit("onEdit2")) .Columns(columns=> { columns.Bound(o => o.CustGlobalCode); columns.Bound(o => o.CustName); columns.Bound(o => o.CustLocation); columns.Command(command => { command.Edit().Text(" "); }); }) .ToolBar(commands=>commands.Create()) .Editable(editable=>editable .Mode(GridEditMode.PopUp)) .DataSource(dataSource=>dataSource .Ajax() // .Aggregates(agg=> //{ // agg.Add(p => p.Apportionment).Sum(); //}) .Model(m=>m.Id(x=>x.Id)) //.Events(events => events.Error("error")) .PageSize(10) .Read(read=>read.Action("GetPathAccountCust","Admin", new { Id = "#= Id #" })) .Create(create=>create.Action("InsertPathAccountCust","Admin", new { Id = "#= Id #" })) .Update(update=>update.Action("UpdatePathAccountCust","Admin")) .Destroy(delete=>delete.Action("DeletePathAccountCust","Admin")) ) //.Pageable(p=>p.Refresh(true)) .Sortable() .ToClientTemplate()) </script>public ActionResult InsertPathAccountCust([DataSourceRequest] DataSourceRequest request, Models.PathAccountCust newAccountCust, int Id){ try { newAccountCust.AccountNoId = Id; _PriceRepository.insertPathAccountCodeCust(newAccountCust); return Json(new[] { newAccountCust }.ToDataSourceResult(request, ModelState), JsonRequestBehavior.AllowGet); } catch (Exception ex) { ModelState.AddModelError("ERR1", ex.Message); return Json(ModelState.ToDataSourceResult(), JsonRequestBehavior.AllowGet); }}<div style="width:800px;font-size:x-small; padding-top:40px;">@(Html.Kendo().Grid<DRS2014.Models.PathAccountCode>() .Name("GridRules") .Columns(columns => { columns.Bound(e => e.pId); columns.Bound(e => e.Debtors_Account_Code).Title("Debtors<br/>Account<br/>Code"); columns.Bound(e => e.Email).Width(100); columns.Bound(e => e.EmailConfirmed).Title("Email<br/>Confirmed?").Width(40); columns.Bound(e => e.BackingReportFormat).Title("Report<br/>Format"); columns.Bound(e => e.BackingReportType).Title("Report<br/>Type"); columns.Bound(e => e.InvoiceType).Title("Invoice<br/>Type"); columns.Command(command => { command.Edit().Text(" "); }).Width(80); }) .Sortable() .Pageable() //.Scrollable() .ClientDetailTemplateId("detailsTemplate") //.HtmlAttributes(new { style = "height:430px;" }) .DataSource(dataSource => dataSource .Ajax() .Model(m=>m.Id(p=>p.pId)) .PageSize(10) .Read(read => read.Action("GetPathAccounts", "Admin")) .Create(create=>create.Action("InsertPathAccount","Admin")) .Update(update=>update.Action("UpdatePathAccount","Admin")) .Destroy(delete=>delete.Action("DeletePathAccount","Admin")) ) .Events(e=>e.Edit("onEdit")) .ToolBar(commands=>commands.Create()) .Editable(editable=>editable .Mode(GridEditMode.PopUp)) .Filterable()) <br /></div><script id="detailsTemplate" type="text/kendo-tmpl"> @(Html.Kendo().Grid<DRS2014.Models.PathAccountCust>() .Name("Data_#=pId#") //.Events(e=>e.Edit("onEdit2")) .Columns(columns=> { columns.Bound(o => o.CustGlobalCode); columns.Bound(o => o.CustName); columns.Bound(o => o.CustLocation); columns.Command(command => { command.Edit().Text(" "); }); }) .ToolBar(commands=>commands.Create()) .Editable(editable=>editable .Mode(GridEditMode.PopUp)) .DataSource(dataSource=>dataSource .Ajax() // .Aggregates(agg=> //{ // agg.Add(p => p.Apportionment).Sum(); //}) .Model(m=>m.Id(x=>x.Id)) //.Events(events => events.Error("error")) .PageSize(10) .Read(read=>read.Action("GetPathAccountCust","Admin", new { pId = "#= pId #" })) .Create(create=>create.Action("InsertPathAccountCust","Admin", new { pId = "#= pId #" })) .Update(update=>update.Action("UpdatePathAccountCust","Admin")) .Destroy(delete=>delete.Action("DeletePathAccountCust","Admin")) ) //.Pageable(p=>p.Refresh(true)) .Sortable() .ToClientTemplate()) </script>public ActionResult InsertPathAccountCust([DataSourceRequest] DataSourceRequest request, Models.PathAccountCust newAccountCust, int pId){ try { newAccountCust.AccountNoId = pId; _PriceRepository.insertPathAccountCodeCust(newAccountCust); return Json(new[] { newAccountCust }.ToDataSourceResult(request, ModelState), JsonRequestBehavior.AllowGet); } catch (Exception ex) { ModelState.AddModelError("ERR1", ex.Message); return Json(ModelState.ToDataSourceResult(), JsonRequestBehavior.AllowGet); }}public static void RegisterRoutes(RouteCollection routes){ routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );}@model PASS.ViewModels.Proposals.AttachmentsViewModel<div class="editor-container"> @Html.Hidden("Form_Disabled", ViewData["FormDisabled"]) <p>File uploads can not exceed 1MB each and must be of the following file types: pdf, jpg, gif, png.</p> <div class="editor-label"> @Html.Label("File(s):") </div> <div class="editor-field"> @(Html.Kendo().Upload() .Name("Upload") .Async(async => async .Save("AddAttachments", "Proposals", new { proposalID = Model.Proposal_ID }) ) ) </div> <br class="clear" /> <br /> <br /> @(Html.Kendo().Grid<PASS.ViewModels.Proposals.AttachmentsViewModel>() .Name("Attachments") .Columns(columns => { columns.Bound(c => c.File_Name).ClientTemplate("<a href='" + Url.Action("LoadAttachment", "Proposals") + "/#= ID #'>" + "#= File_Name #" + "</a>").Title("File Name"); columns.Bound(c => c.File_Size).Title("Size"); columns.Bound(c => c.Content_Type).Title("Type"); columns.Command(command => { command.Destroy(); }).Width(90); }) .Sortable() .DataSource(dataSource => dataSource .Ajax() .Model(model => model.Id(c => c.ID)) .Read(read => read.Action("GetAttachments", "Proposals", new { proposalID = Model.Proposal_ID })) .Destroy(destroy => destroy.Action("DeleteAttachment", "Proposals")) ) ) <br /> <p>Upoaded files will not be available for viewing until they have been reviewed.</p></div><script type="text/javascript">$(document).ready(function () { var formDisabled = $('#Form_Disabled').val(); if (formDisabled == "True") { $('#Upload').data('kendoUpload').disable(); $('#Attachments').data('kendoGrid').bind("dataBound", function () { $('.k-grid-delete', '#Attachments').hide(); }) } $('#Upload').data('kendoUpload').bind("success", function () { $('#Attachments').data('kendoGrid').dataSource.read(); })});</script>[HttpPost]public ActionResult AddAttachments(int proposalID, IEnumerable<HttpPostedFileBase> upload){ int user_id = Convert.ToInt32(((Claim)((ClaimsIdentity)Thread.CurrentPrincipal.Identity).FindFirst(a => a.Type.Equals("UserID"))).Value); var return_message = ""; if (CheckProposalReadAccess(user_id, proposalID)) { using (var context = new PASSEntities()) { foreach (var file in upload) { if (Path.GetExtension(file.FileName) != ".pdf" || Path.GetExtension(file.FileName) != ".jpg" || Path.GetExtension(file.FileName) != ".gif" || Path.GetExtension(file.FileName) != ".png") { return_message = "Uploads must be one of the following file types: pdf, jpg, gif, png."; break; } if (file.ContentLength > 1024) { return_message = "Uploads can not be larger than 1MB each."; break; } Proposal_Attachments model = new Proposal_Attachments() { Proposal_ID = proposalID, Upload_Date = DateTime.Now, File_Name = Path.GetFileName(file.FileName), File_Size = file.ContentLength, Content_Type = file.ContentType, File_Contents = new byte[file.ContentLength], }; file.InputStream.Read(model.File_Contents, 0, file.ContentLength); context.Proposal_Attachments.Add(model); context.SaveChanges(); } return Content(return_message); } } else { return RedirectToAction("Index"); }}public class UserModel{ #region Properties [Display(Name = @"Username")] [Required] public string UserName { get; set; } [Required] public string Name { get; set; } [Display(Name = @"E-mail")] [EmailAddress] public string Email { get; set; } public string Phone { get; set; } public string Company { get; set; } [DataType(DataType.Password)] [Display(Name = @"Password")] [Required] public string PasswordHash { get; set; } [Display(Name= @"Roles")] public List<string> UserRoles { get; set; } [ScaffoldColumn(false)] public string UserRoleIcon { get; set; } [ScaffoldColumn(false)] public string UserRoleIconInverted { get; set; } #endregion public UserModel() { } public UserModel(UserContract userContract) { SetupUserModel(userContract); } private void SetupUserModel(UserContract userContract) { UserName = userContract.UserName; Name = userContract.Name; Email = userContract.Email ?? ""; Phone = userContract.Phone ?? ""; Company = userContract.Company ?? ""; PasswordHash = userContract.PasswordHash ?? ""; UserRoles = new List<string>(); if (userContract.UserRoles != null) { foreach (var userRole in userContract.UserRoles) { UserRoles.Add(userRole); } } SelectUserRoleIcon(UserRoles); } // TODO: Hierarchy on roles and selecting images? private void SelectUserRoleIcon(IEnumerable<string> userRoles) { foreach (var userRole in userRoles) { switch (userRole.ToLower()) { case "administrator": UserRoleIcon = "Administrator.png"; UserRoleIconInverted = "Administrator_Black.png"; break; case "operator": UserRoleIcon = "Operator.png"; UserRoleIconInverted = "Operator_Black.png"; break; case "supervisor": UserRoleIcon = "Supervisor.png"; UserRoleIconInverted = "Supervisor_Black.png"; break; default: UserRoleIcon = "Guest.png"; UserRoleIconInverted = "Guest_Black.png"; break; } } }}@(Html.Kendo().Grid<Stimline.Xplorer.Services.Models.User.UserModel>() .Name("grid") .Columns(columns => { columns.Bound(p => p.UserName); columns.Bound(p => p.Name); columns.Bound(p => p.Email); columns.Bound(p => p.Phone); columns.Bound(p => p.UserRoles); columns.Command(command => { command.Edit(); }).Width(160); }) .ToolBar(toolbar => toolbar.Create()) .Editable(editable => editable.Mode(GridEditMode.PopUp)) .Pageable() .Sortable() .Scrollable() .HtmlAttributes(new { style = "height:430px;" }) .DataSource(dataSource => dataSource .Ajax() .PageSize(20) .Events(events => events.Error("error_handler")) .Model(model => model.Id(p => p.UserName)) .Create(update => update.Action("EditingPopup_Create", "UserManagement")) .Read(read => read.Action("EditingPopup_Read", "UserManagement")) .Update(update => update.Action("EditingPopup_Update", "UserManagement")) //.Destroy(update => update.Action("EditingPopup_Destroy", "Grid")) ) )01.public JsonResult GetTestDetailed([DataSourceRequest] DataSourceRequest request)02.{03. var testTable = dataAccessLayer.GetDataTable("select statement here");
//testTable will be about 600 rows04. var testDictionary = (from DataRow row in testTable.Rows select testTable.Columns.Cast<DataColumn> ().ToDictionary(column => column.ColumnName, column => row[column].ToString())).ToList().AsQueryable();05. return Json(testDictionary.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);06. }07. }08. 09. [AcceptVerbs(HttpVerbs.Post)]10. public ActionResult Update([DataSourceRequest] DataSourceRequest request, TestDirectoryDetail testDetail)11. {12. dataAccessLayer.Update(testDetail);13. return Json(new[] { testDetail }.ToDataSourceResult(request, ModelState));14. }01.<script type="text/javascript">02. function onSync(e) {03. var grid = $('#TestGrid').data('kendoGrid');04. grid.dataSource.read();05. }06.</script>07. 08.@(Html.Kendo().Grid((IEnumerable<DirectoryDetail>)ViewBag.Details)09. .Name("TestGrid")10. .HtmlAttributes(new { style = "height:850px;" })11. .Editable(editable => editable.Mode(GridEditMode.InLine))12. .Events(e => e.SaveChanges("onSaveChanges"))13. .Filterable()14. .Groupable() 15. .Pageable() // Enable pageing16. .Scrollable(scr=>scr.Height("auto"))17. .Sortable() // Enable sorting18. .DataSource(dataSource => dataSource19. .Ajax()20. .Events(events => events.Error("error_handler").Sync("onSync"))21. .PageSize(15)22. .Model(model => 23. {24. model.Id(p => p.Id);25. })26. .Update(update => update.Action("Update", "Home"))27. .Read(read => read.Action("GetPracticesDetailed", "Home"))28. )29. .Columns(columns =>30. {31. columns.Bound(m => m.PracticeId).Title("Id");32. columns.Bound(m => m.PayManager).Width(150).Title("DPM").Template(m => m.PayManager).EditorTemplateName("PayManagerDropDown").ClientTemplate("#:PayManager#");33. columns.Command(command => command.Edit()).Title("Actions");34. }) 35. .Resizable(resize => resize.Columns(true)))01.@(Html.Kendo().ComboBox()02. .Name("PayManagerId")03. .Filter(FilterType.StartsWith)04. .HtmlAttributes(new {style = "width:auto;"})05. .Placeholder("Type beginning of name to select new pay manager")06. .DataTextField("FullName")07. .DataValueField("userid")08. .AutoBind(true)09. .Suggest(true)10. .DataSource(source => source.Read(read => read.Action("GetUsers", "Home")).ServerFiltering(false)))@(Html.Kendo().Grid(Model) .Name("PatientSearchGrid") .Columns(columns => { columns.Bound(e => e.LName).Title("Last Name"); columns.Bound(e => e.FName).Title("First Name"); columns.Bound(e => e.ReferralDate); columns.Bound(e => e.Status); columns.Bound(e => e.ID).Hidden(); columns.Bound(e => e.ID).ClientTemplate( "<a href='" + Url.Action("GetPatient", "Patient") + "/#= ID #'" + "class='btn btn-sm'>View Patient</a>" ).Width(110).Title(""); columns.Bound(e => e.ID).ClientTemplate( "<a href='" + Url.Action("CreateAccount", "Patient") + "/#= ID #'" + "class='btn btn-sm'>Create Account</a>" ).Width(127).Title(""); }) .HtmlAttributes(new { style = "height: 390px;" }) .Pageable(pageable => pageable .PageSizes(true).PageSizes(new int[] { 20, 50, 100 }) .ButtonCount(5)) .Sortable() .Filterable() .Scrollable() .DataSource(dataSource => dataSource .Ajax() .Sort(s => s.Add(n => n.LName)) .PageSize(20) .ServerOperation(false)) //.Events(events => events.DataBound("dataBound")))