or
[{"Microcampamento":{"id":"-1","mc_nombre":ninguno)","mc_calle_nombre":"","mc_calle_numero":"0","mc_comuna":"0","mc_anoest":"0000","mc_int_inicio":"0000-00-00","mc_int_fin":"0000-00-00","idfase":"0","mc_email_equipo":"nl","mc_comollegar":"null","mc_rasofac":"null","mc_bbdd":"null"}},{"Microcampamento":{"id":"1","mc_nombre":"4 Canchas","mc_calle_nombre":"Calle diecinueve","mc_calle_numero":"1118","mc_comuna":"118","mc_anoest":"2003","mc_int_inicio":"2010-01-01","mc_int_fin":"0000-00-00","idfase":"4","mc_email_equipo":"cnovoa@segen.cl","mc_comollegar":"null","mc_rasofac":"null","mc_bbdd":"null"}},
{"Microcampamento":{"id" ....and the other fields......}}]ds=new kendo.data.DataSource({ transport:{ read:{ url:"/FTC/microcampamentos/crud", dataType: "json", complete: function(jqXHR, textStatus) { console.log(textStatus, "read") } } }, update:{ url: "/FTC/microcampamentos/crud", type: "POST", complete: function(jqXHR, textStatus) { console.log(textStatus, "update") } }, parameterMap: function(options, operation) { }, change: function(){ console.log("Something happened!") }, error: function() { alert("Ha ocurrido un error al intentar conectar con la base de datos."); }, schema: { model:{ id:"Microcampamento.id", fields:{ 'Microcampamento.id': {editable:false}, 'Microcampamento.mc_nombre': {editable:true}, 'Microcampamento.mc_calle_nombre': {editable:true}, 'Microcampamento.mc_calle_numero': {editable:true}, 'Microcampamento.mc_comuna': {editable:true}, 'Microcampamento.mc_anoest': {editable:true}, 'Microcampamento.mc_int_inicio': {editable:true}, 'Microcampamento.mc_int_fin': {editable:true}, 'Microcampamento.idfase': {editable:true}, 'Microcampamento.mc_email_equipo': {editable:true}, 'Microcampamento.mc_comollegar': {editable:true}, 'Microcampamento.mc_rasofac': {editable:true}, 'Microcampamento.mc_bbdd': {editable:true} } } }, pageSize:10 });$(document).ready(function(){ //KendoGrid para Microcampamentos $("#mc_grid").kendoGrid({ dataSource:ds, height: 370, scrollable:false, sortable: true, pageable: true, editable: true, navigatable: true, toolbar: ["create", "save", "cancel","destroy"], columns: [ {field: "Microcampamento.id", title: "ID"}, {field: "Microcampamento.mc_nombre", title: "Nombre"}, {field: "Microcampamento.mc_calle_nombre", title: "Calle"}, {field: "Microcampamento.mc_calle_numero", title: "Número"}, {field: "Microcampamento.mc_comuna", title: "Comuna"}, {field: "Microcampamento.mc_anoest", title: "Año Est."}, {field: "Microcampamento.mc_int_inicio", title: "Inicio Interv."}, {field: "Microcampamento.mc_int_fin", title: "Fin Interv."}, {field: "Microcampamento.idfase", title: "Fase", width: '100px'}, {field: "Microcampamento.mc_email_equipo", title: "Email Equipo"}, {field: "Microcampamento.mc_comollegar", title: "Cómo Llegar", template:'<a href="" >IR</a>'}, {field: "Microcampamento.mc_rasofac", title: "Rasofac"}, {field: "Microcampamento.mc_bbdd", title: "BBDD"} ] }) });//_Layout.cshtml<!DOCTYPE html><html><head> <meta charset="utf-8" /> <title>@ViewBag.Title</title> <link href="@Url.Content("~/Styles/Site.css")" rel="stylesheet" type="text/css" /> <script src="@Url.Content("http://code.jquery.com/jquery-1.7.1.min.js")" type="text/javascript"></script> <script src="@Url.Content("http://code.jquery.com/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/kendo.all.min.js")" type="text/javascript"></script> <link href="@Url.Content("~/Styles/kendo.common.min.css")" rel="stylesheet" /> <link href="@Url.Content("~/Styles/kendo.default.min.css")" rel="stylesheet" type="text/css" /></head><body> <div class="page"> <header> <nav> <ul id="menu"> <li>@Html.ActionLink("Home", "Index", "Home")</li> <li>@Html.ActionLink("About", "About", "Home")</li> <li>@Html.ActionLink("Customer Service", "CustomerService", "Home")</li> <li>@Html.ActionLink("Producers & Brokers Agencies", "ProducersBrokerAgencies", "Home")</li> <li>@Html.ActionLink("Partner Agencies", "PartnerAgencies", "Home")</li> <li>@Html.ActionLink("Internal Users", "InternalUsers", "Home")</li> <li>@Html.ActionLink("Members", "Members", "Home")</li> <li>@Html.ActionLink("Billing", "Billing", "Home")</li> <li>@Html.ActionLink("Reports", "Reports", "Home")</li> </ul> </nav> </header> <section id="main"> @RenderBody() </section> <footer> </footer> </div></body></html>//CustomerService.cshtml@{ ViewBag.Title = "Customer Service View";}<h2>@ViewBag.Message</h2><p> Customer Service Page View</p> <div id="example" class="k-content"> <div id="window" style="width:100%;"> </div> <div id="grid"></div> <script type="text/javascript"> var dateRegExp = /^\/Date\((.*?)\)\/$/; function toDate(value) { var date = dateRegExp.exec(value); return new Date(parseInt(date[1])); } $(document).ready(function () { $("#grid").kendoGrid({ dataSource: { type: "json", transport: { read: "JsonGetUsers" }, schema: { model: { fields: { Username: { type: "string" }, UserId: { type: "string" }, Email: { type: "string" }, LastLoginDate: { type: "date" }, DaysSinceActive: { type: "int" }, Name: { type: "string" }, DetailsLink: { type: "string" } } } }, pageSize: 100 }, height: 410, filterable: true, sortable: true, pageable: true, columns: [ "Username", "Email", { field: "LastLoginDate", template: '#= kendo.toString(toDate(LastLoginDate), "MM/dd/yyyy") #' }, "DaysSinceActive", "Name", { title: "", width: "180px", template: '#= ShwEdit(DetailsLink)#', filterable: false } ] }); }); function ShwEdit(d) { var dlink = '<input type="button" value="Details" class="k-button" id="btnstatus" style="height:27px;" onclick="ShowPop(' + "'" + d + "'" + ')"/>'; return dlink; } function ShowPop(d) { var win = $("#window"); if (!win.data("kendoWindow")) { // window not yet initialized win.kendoWindow({ width: 920, height: 620, actions: ["Refresh", "Maximize", "Minimize", "Close"], content: d, title: "User Details", draggable: true, modal: true, resizable: false, close: onClose, refresh: function () { this.center(); } }).data("kendoWindow").center().open(); } else { // reopening window win.data("kendoWindow") .refresh(d) // request the URL via AJAX .title("User Details") .center().open(); // open the window; } } function onClose(e) { $.ajax( { type: "GET", url: "/Home/JsonGetUsers", success: function (result) { var grid = $("#grid").data("kendoGrid"); grid.dataSource.data(result); grid.dataSource.sync(); grid.refresh(); }, error: function (result) { alert('error'); } }); } </script></div>//UserDetailView on popup window@model WebAdmin3.WebApp.Models.UserDetail@{ ViewBag.Title = "User Details";}<h2>User Details for @Model.Username</h2><fieldset style="width: 98%; padding: 0.4em;"> <div id="divButton" style="margin-left:96%; margin-top:1%; width: 4%; "> <span id="editUser" class="k-group" style="text-align: center; white-space: nowrap; border-width: 1px; border-style: solid; padding: .2em; cursor: pointer;">Edit</span> </div> <table style="width:100%; border: 0;"><tr> <td style="border: 0; width: 14%;">User Name:</td><td style="border: 0; width: 24%;">@Model.Username</td> <td style="border: 0; width: 14%;">Email:</td><td style="border: 0; width: 44%;"><label id="lblEmail">@Model.Email</label> <input type="text" id="txtemail" name="txtemail" style="display:none; font-size: 1em;"/></td></tr><tr> <td style="border: 0; width: 14%;">Creation Date:</td><td style="border: 0; width: 14%;">@Model.CreationDate</td> <td style="border: 0; width: 14%;">Last Activity Date:</td><td style="border: 0; width: 44%;">@Model.LastActivityDate</td></tr><tr> <td style="border: 0; width: 14%;">Last Login Date:</td><td style="border: 0; width: 14%;">@Model.LastLoginDate</td> <td style="border: 0; width: 14%;">Is Locked Out:</td><td style="border: 0; width: 44%;">@Model.IsLockedOut</td></tr><tr> <td style="border: 0;"> <span id="manageSecurity" class="k-group" style="text-align: center; white-space: nowrap; border-width: 1px; border-style: solid; padding: .2em; cursor: pointer;">Manage Security</span> </td></tr><tr><td colspan="4" style="border: 0;"> <div id="divSaveButton" style="margin-bottom:1%; margin-left:90%; width: 12%; "> <span id="saveUser" class="k-group" style="display:none; text-align: left; white-space: nowrap; border-width: 1px; border-style: solid; padding: .2em; cursor: pointer;">Save</span> <span id="cancelUser" class="k-group" style="display:none; text-align: right; white-space: nowrap; border-width: 1px; border-style: solid; padding: .2em; cursor: pointer;">Cancel</span> </div></td></tr></table> <div id="divManageSecurity" style="float: left; width: 99%; background-color: #FFFFEC; border: thin groove #C0C0C0; padding: 4px;"> <div style="width: 62%; float: left; font-size: 0.8em; line-height: 0.4em;" > <fieldset style="margin: 4px; width: 100%; padding: 0.4em;"> <legend>Security Options</legend> <p> You may use the auto generated password (pre-populated in the new password box) <strong>or</strong><br /> change to a <em>customer requested password</em>. The generated password is <span class="style2">intentionally invalid</span>. </p> <ul style="padding-left: 20px"> <li><em>customer requested password</em> must be 8 - 20 characters in length.</li> <li><em>customer requested password</em> must contain at least 1 upper case and 1 lower case letter</li> <li><em>customer requested password</em> must have both letters AND numbers) </li> </ul> <span style="color: Red">* </span> <label id="lblpasswordLabel">New Password:</label> <input type="text" id="txtPassword" name="txtPassword" /> <span id="checkPassword" class="k-group" style="text-align: left; white-space: nowrap; border-width: 1px; border-style: solid; padding: .2em; cursor: pointer;">Check Password</span> <br /><br /> <p> <span id="disableUser" class="btnRed" >Disable User</span> <span id="resetAnswers" class="btnOrange">Reset Security Answers</span> <span id="passwordReset" class="btnGreen">Password Reset</span> <span id="unlockUser" class="btnGreen">Unlock User</span> </p> </fieldset> </div> <div style="width: 36%; float: right; font-size: 0.8em; line-height: 0.4em;"> <fieldset style="width: 90%; padding: 4%; margin-top:2.44%;"> <div id="divRoleLabelTitle" style="width: 26%; float:left;"> <label id="lblCurrentBillingRoleTitle">Billing Role:</label> </div> <div id="divRoleLabel" style="width:60%; float:left;"> <b><label id="lblCurrentBillingRole">No Billing</label> </b> </div> <div id="divEditLinkBilling" style="width:8%; float:right;"> <span id="lbtBillingEditRoleRadios" class="k-group" style="text-align: center; white-space: nowrap; border-width: 1px; border-style: solid; padding: .2em; cursor: pointer;">Edit</span> </div> <div id="divBillingNoneRadio" style="width: 98%; float:left; margin-left: 1%; margin-top:2%;"> <input type="radio" name="rdoBillingNone" value="none" CHECKED /> <label id="lblNoBillingRole">No Billing Access</label> </div> <div id="divBillingRadio" style="width: 98%; float:left; margin-left: 1%;"> <input type="radio" name="rdoBilling" value="billing" /> <label id="lblBillingRole">Billing - View Only</label> </div> <div id="divBillingFullRadio" style="width: 98%; float:left; margin-left: 1%;"> <input type="radio" name="rdoBillingFull" value="billing" /> <label id="lblFullBillingRole">Billing - Full Access</label> </div> <div id="divBillingRoleButtons" style="float:right;"> <span id="btnSaveBillingRole" class="btnGreen">Save</span> <span id="btnCancelBillingRole" class="btnGreen">Cancel</span> </div> </fieldset> <fieldset style="width: 96%; padding: 1%;" id="fldRoles;"> <div id="divEditLinkRoles" style="width:10%; float:right; margin-top: 4%;"> <span id="lbtEditRolesRadios" class="k-group" style="text-align: center; white-space: nowrap; border-width: 1px; border-style: solid; padding: .2em; cursor: pointer;">Edit</span> </div> <fieldset style="width: 97%; padding: 1%; margin-top:10%;" id="fldEnrollment"> <div runat="server" id="divEnrollmentNoneRadio" style="width: 99%; float:left; margin-left: 1%;"> <input type="radio" name="rdoEnrollmentNone" value="none" CHECKED /> <label id="lblNoEnrollmentRole">No Enrollment Access</label> </div> <div runat="server" id="divEnrollmentRadio" style="width: 99%; float:left; margin-left: 1%;"> <input type="radio" name="rdoEnrollment" value="none" /> <label id="lblEnrollmentRole">Enrollment - View Only</label> </div> <div runat="server" id="divEnrollmentFullRadio" style="width: 99%; float:left; margin-left: 1%;"> <input type="radio" name="rdoEnrollmentFull" value="none" /> <label id="lblEnrollmentFullRole">Enrollment - Full Access</label> </div> </fieldset> <fieldset style="width: 97%; padding: 1%;" id="fldClaims"> <div runat="server" id="divClaimsNoneRadio" style="width: 99%; float:left; margin-left: 1%;"> <input type="radio" name="rdoClaimsNone" value="none" SELECTED /> <label id="lblClaimsNone">No Claims Access</label> </div> <div runat="server" id="divClaimsRadio" style="width: 99%; float:left; margin-left: 1%;"> <input type="radio" name="rdoClaims" value="none"/> <label id="lblClaims">Claims</label> </div> </fieldset> <div id="divResetRoleButton" runat="server" style="width:42%; float:left; margin-bottom:2%;"> <span id="btnResetSecurity" class="btnBlue">Reset to Employer</span> </div> <div id="divRoleButtons" runat="server" style="float:right; margin-bottom:2%;"> <span id="btnSaveSecurity" class="btnGreen">Save</span> <span id="btnCancelRole" class="k-group" style="text-align: center; white-space: nowrap; border-width: 1px; border-style: solid; padding: .2em; cursor: pointer;">Cancel</span> </div> </fieldset> </div></div><label id="lblUserID" style="color:#cacaca" >@Model.UserId</label> </fieldset> <script type="text/javascript"> $(document).ready(function () { //hide buttons $('#divManageSecurity').hide(); $('#btnSaveBillingRole').hide(); $('#btnCancelBillingRole').hide(); $('#btnResetSecurity').hide(); $('#btnSaveSecurity').hide(); $('#btnCancelRole').hide(); //buttons in enrollment/claims section $('#btnResetSecurity').click(function () { $('#btnResetSecurity').hide(); $('#btnSaveSecurity').hide(); $('#btnCancelRole').hide(); $('#lbtEditRolesRadios').show(); }); $('#btnSaveSecurity').click(function () { $('#btnResetSecurity').click(); }); $('#btnCancelRole').click(function () { $('#btnResetSecurity').click(); }); $('#lbtEditRolesRadios').click(function () { $('#btnResetSecurity').show(); $('#btnSaveSecurity').show(); $('#btnCancelRole').show(); $('#lbtEditRolesRadios').hide(); }); //buttons in billing section $('#lbtBillingEditRoleRadios').click(function () { $('#btnSaveBillingRole').show(); $('#btnCancelBillingRole').show(); $('#lbtBillingEditRoleRadios').hide(); }); $('#btnSaveBillingRole').click(function () { $('#btnSaveBillingRole').hide(); $('#btnCancelBillingRole').hide(); $('#lbtBillingEditRoleRadios').show(); }); $('#btnCancelBillingRole').click(function () { $('#btnSaveBillingRole').click(); }); //buttons on main form $('#manageSecurity').click(function () { $('#divManageSecurity').slideToggle(); }); $('#divButton > #editUser').click(function () { $('#txtemail').show(); $('#txtemail').val("@Model.Email"); $('#editUser').hide(); $("#lblEmail").hide(); $('#saveUser').show(); $('#cancelUser').show(); }); $('#divSaveButton > #saveUser').click(function () { $.post('@Url.Action("SaveEmail")', { newEmail: $('#txtemail').val(), userId: $('#lblUserID').text() }, function (result) { // the value was successfully posted to the server var windowObject = $("#window").data("kendoWindow"); windowObject.refresh(); }); }); $('#divSaveButton > #cancelUser').click(function () { $('#txtemail').hide(); $('#txtemail').val(""); $('#editUser').show(); $("#lblEmail").show(); $('#saveUser').hide(); $('#cancelUser').hide(); }); }); </script>/Home Controller and all actionsusing System;using System.Collections.Generic;using System.Data;using System.Data.SqlClient;using System.Web.Mvc;using WebAdmin3.WebApp.Models;using System.Web.Security;namespace WebAdmin3.WebApp.Controllers{ public class HomeController : Controller { public static DataSet ExecuteDataSet(SqlCommand sqlCmd, string connectionString) { if (connectionString == null) throw (new ArgumentNullException("connectionString")); if (connectionString.Length == 0) throw (new ArgumentOutOfRangeException("connectionString")); if (sqlCmd == null) throw (new ArgumentNullException("sqlCmd")); using (var cn = new SqlConnection(connectionString)) { sqlCmd.Connection = cn; cn.Open(); var da = new SqlDataAdapter(sqlCmd); var ds = new DataSet(); da.Fill(ds); return (ds); } } public static void AddParameterToSqlCmd(SqlCommand sqlCmd, string parameterId, SqlDbType sqlType, int parameterSize, ParameterDirection parameterDirection, object parameterValue) { if (sqlCmd == null) throw (new ArgumentNullException("sqlCmd")); if (parameterId == null) throw (new ArgumentNullException("parameterId")); if (parameterId.Length == 0) throw (new ArgumentOutOfRangeException("parameterId")); if (parameterValue == null) parameterValue = DBNull.Value; var newSqlParam = new SqlParameter { ParameterName = parameterId, SqlDbType = sqlType, Direction = parameterDirection }; if (parameterSize > 0) newSqlParam.Size = parameterSize; if (parameterValue != null) newSqlParam.Value = parameterValue; sqlCmd.Parameters.Add(newSqlParam); } private static DataSet GetCustomers() { using (var cmd = new SqlCommand("usp_GetEPRecordsWithMembership")) { cmd.CommandType = CommandType.StoredProcedure; AddParameterToSqlCmd(cmd, "recType", SqlDbType.NVarChar, 50, ParameterDirection.Input, @"extranet\employer"); AddParameterToSqlCmd(cmd, "db", SqlDbType.NVarChar, 50, ParameterDirection.Input, @"LSVSitecore_Core"); AddParameterToSqlCmd(cmd, "pilotuser", SqlDbType.NVarChar, 50, ParameterDirection.Input, @"extranet\pilot employer"); AddParameterToSqlCmd(cmd, "manualSecurityUser", SqlDbType.NVarChar, 50, ParameterDirection.Input, @"extranet\employer manual security"); return ExecuteDataSet(cmd, @"user id=WebAdmin;password=Usable1234;Data Source=USLWEBDEV2\WEBSQL2K5DEV;Database=ExternalSystems"); } } private static UserDetail GetUserDetailById(string userId) { var userDetailData = new UserDetail(); if (string.IsNullOrEmpty(userId)) return null; var mu = Membership.GetUser(new Guid(userId)); if (mu == null) return null; userDetailData.Username = mu.UserName; userDetailData.Email = mu.Email; userDetailData.UserId = userId; userDetailData.CreationDate = mu.CreationDate; userDetailData.LastActivityDate = mu.LastActivityDate; userDetailData.LastLoginDate = mu.LastLoginDate; userDetailData.IsLockedOut = mu.IsLockedOut; return userDetailData; } [AcceptVerbs(HttpVerbs.Get)] public JsonResult JsonGetUsers() { var data = GetCustomers(); //returns a dataset from a SQL table var customerList = new List<CustomerService>(); foreach (DataRow dr in data.Tables[0].Rows) { var cl = new CustomerService(); int days; DateTime lastlogin; int.TryParse(dr["DaysSinceActive"].ToString(), out days); DateTime.TryParse(dr["LastLoginDate"].ToString(), out lastlogin); cl.DaysSinceActive = days; cl.Email = dr["LoweredEmail"].ToString(); cl.LastLoginDate = lastlogin; cl.Name = dr["FullName"].ToString(); cl.Username = dr["Username"].ToString(); cl.UserId = dr["userid"].ToString(); cl.DetailsLink = "UserDetailView/" + cl.UserId; customerList.Add(cl); } return Json(customerList, JsonRequestBehavior.AllowGet); } public ActionResult Index() { ViewBag.Message = "Welcome to WebAdmin"; return View(); } public ActionResult About() { return View(); } public ActionResult CustomerService() { ViewBag.Message = "Customer Service Home"; return View(); } public ActionResult ProducersBrokerAgencies() { ViewBag.Message = "Producers & Broker Agencies Home"; return View(); } public ActionResult PartnerAgencies() { ViewBag.Message = "Partner Agencies Home"; return View(); } public ActionResult InternalUsers() { ViewBag.Message = "Internal Users Home"; return View(); } public ActionResult Members() { ViewBag.Message = "Members Home"; return View(); } public ActionResult Billing() { ViewBag.Message = "Billing Home"; return View(); } public ActionResult Reports() { ViewBag.Message = "Reports Home"; return View(); } public ActionResult UserDetailView(string id) { var ddata = GetUserDetailById(id); return PartialView(ddata); } [HttpPost] public ActionResult SaveEmail(string newEmail, string userId) { var mu = Membership.GetUser(new Guid(userId)); mu.Email = newEmail; Membership.UpdateUser(mu); return RedirectToAction(@"UserDetailView/" + userId, "Home"); } }}//Customer Service Modelusing System;namespace WebAdmin3.WebApp.Models{ public class CustomerService { public string UserId { get; set; } public string Username { get; set; } public string Name { get; set; } public string Email { get; set; } public DateTime LastLoginDate { get; set; } public int DaysSinceActive { get; set; } public string DetailsLink { get; set; } }}//UserDetail Model used on detail popupusing System;namespace WebAdmin3.WebApp.Models{ public class UserDetail { public string UserId { get; set; } public string Username { get; set; } public string Email { get; set; } public DateTime CreationDate { get; set; } public DateTime LastActivityDate { get; set; } public DateTime LastLoginDate { get; set; } public bool IsLockedOut { get; set; } }}//connection string in web.config in configuration section <connectionStrings> <add name="CoreConn" connectionString="user id=;password=;Data Source=serverName\databaseName;Database=database" /> </connectionStrings>//membership provider variables for Membership functoinality in web.config in system.web section <membership defaultProvider="sql" userIsOnlineTimeWindow="15"> <providers> <clear /> <add name="sql" type="System.Web.Security.SqlMembershipProvider" connectionStringName="CoreConn" applicationName="sitecore" minRequiredPasswordLength="1" minRequiredNonalphanumericCharacters="0" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="2" /> </providers> </membership>if (viewID === "poDetails-view") { var poNumber = getQueryStringParam("PO"); po = ds.get(poNumber); /**** ALWAYS RETURNS 'undefined' ****/ view.content.data("kendoMobileScroller").scrollElement.html(poDetailsTemplate(po)); kendo.mobile.enhance(view.content);}