or
@(Html.Kendo().Grid<
Listing
>()
.Name("grid")
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("RefreshTable", "HomeController"))
)
.Columns(columns =>
{
columns.Bound(x => x.Number)
.Width(120)
.Template(@<
text
></
text
>)
.ClientTemplate(
"<
div
class
=
'btn-group'
>" +
"<
button
type
=
'button'
class
=
'btn btn-default btn-sm dropdown-toggle'
data-toggle
=
'dropdown'
><
span
id
=
'selectedTagType'
>#= Number#</
span
> <
span
class
=
'caret'
></
span
></
button
>" +
"<
ul
class
=
'dropdown-menu'
role
=
'menu'
>" +
"<
li
><
a
onclick
=
'editRecord();'
></
a
>Edit</
li
>" +
"<
li
><
a
onclick
=
'activateRecord();'
></
a
>Activate</
li
>" +
"<
li
><
a
onclick
=
'transferRecord();'
></
a
>Transfer</
li
>" +
"</
ul
>" +
"</
div
>"
);
columns.Bound(x => x.TypeDescription);
columns.Bound(x => x.PhoneNumber);
})
)
@(Html.Kendo().Scheduler<
iMail.Web.Models.TaskViewModel
>()
.Name("scheduler")
.Date(DateTime.Now)
.StartTime(new DateTime(2013, 6, 13, 7, 00, 00))
.Height(600)
.Views(views =>
{
views.DayView();
views.WeekView();
views.MonthView();
views.AgendaView(agenda => agenda.Selected(true));
})
.Selectable(true)
.Timezone("Etc/UTC")
.Events(e => e.Edit("onEdit"))
.Editable(editable => {
editable.TemplateName("_EditorTemplatePartial");
editable.Resize(true);
})
.DataSource(d => d
.Model(m => {
m.Id(f => f.TaskID);
m.Field(f => f.Title).DefaultValue("No title");
m.RecurrenceId(f => f.RecurrenceID);
m.Field(e => e.Attendees).DefaultValue(new List<
iMail.Web.Models.CalendarAttendeeModel
>());
})
.Events(e => e.Error("error_handler"))
.Read("TasksRead", "Dashboard")
.Create("TasksCreate", "Dashboard")
.Destroy("TasksDestroy", "Dashboard")
.Update("TasksUpdate", "Dashboard")
)
)
<
div
data-container-for
=
"Attendees"
class
=
"k-edit-field"
>
@(Html.Kendo().MultiSelectFor(model => model.Attendees)
.Name("myMultiSelectiHATEYOU")
.HtmlAttributes(new { data_bind = "value:Attendees" })
.DataTextField("AttendeeName")
.DataValueField("ID")
.BindTo(ViewBag.Contacts)
.Value(Model.Attendees)
</
div>
ICollection<
CalendarAttendeeModel
> contacts = new List<
CalendarAttendeeModel
>();
CalendarAttendeeModel att7 = new CalendarAttendeeModel();
att7.AttendeeName = "Georgette";
att7.ID = 4;
att7.Email = "myemail@attendee7.com";
contacts.Add(att7);
contacts.Add(att8);
contacts.Add(att9);
contacts.Add(att10);
ViewBag.Contacts = contacts;
public ActionResult TasksCreate([Kendo.Mvc.UI.DataSourceRequest]Kendo.Mvc.UI.DataSourceRequest request, TaskViewModel task)
{
}
public class TaskViewModel : Kendo.Mvc.UI.ISchedulerEvent
{
....
public string Title { get; set; }
public string Description { get; set; }
public string StartTimezone { get; set; }
public string EndTimezone { get; set; }
....
public List<
CalendarAttendeeModel
> Attendees { get; set; }
}
<div
class
=
"kendo-tree"
>
@(Html.Kendo().TreeView()
.Name(
"treeview"
)
.DataTextField(
"Name"
)
.TemplateId(
"treeview-template"
)
.DataSource(dataSource => dataSource
.Read(read => read.Action(
"DashboardTree"
,
"Home"
))
)
.Events(e => e.Select(
"onSelect"
))
)
</div>
function
onSelect(e) {
var
data = $(
'#treeview'
).data(
'kendoTreeView'
).dataItem(e.node);
//alert("node clicked" + data.id);
window.location = @Url.Action(
"Edit"
,
"Employee"
,
new
{ id = data.id });
}
@(Html.Kendo().Grid<EveShop.Domain.Entities.CartLine>()
.Name(
"cartGrid"
)
.DataSource(
dataSource => dataSource
.Ajax()
.Read(read => read.Action(
"GetCartList"
,
"Cart"
).Data(
"additionalCartListData"
))
.Model(model =>
{
model.Id(p => p.Product.ProductID);
model.Field(p => p.Product.Name);
model.Field(p => p.Quantity);
model.Field(p => p.Product.Price)
/*.Editable(false)*/
;
})
)
.Columns(columns =>
{
// this first column is really just a picture column, may be a better way to do this
// than binding it to Product.ProductID? to an empty field? didn't see how to do that.
c
olumns.Bound(line => line.Product.ProductID).ClientTemplate(
"<img src='"
+ Url.Content(
"~/Images/Types/"
) +
"#:Product.ProductID#_64.png' alt='#: Product.ProductID #' />"
).Title(
"Picture"
);
columns.Bound(line => line.Product.Name);
columns.Bound(line => line.Quantity);
columns.Bound(line => line.Product.Price);
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
)
Here's the code:
Calling view (Index.cshtml) - grid and popup window:
@model IEnumerable<
GMCEventRegistrationTools.Models.EventRegistrationModel
>
@(Html.Kendo().Grid<
GMCEventRegistrationTools.Models.EventRegistrationModel
>()
.Name("EventRegistrationGrid")
.AutoBind(false)
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.InLine))
.DataSource(dataSource => dataSource
.Ajax()
.Model(model => model.Id(p => p.RegistrationKey))
.Read(read => read.Action("Registrants_Read", "Home").Data("registrantsForEvent"))
.Create(update => update.Action("EditingPopup_Create", "Home"))
.Update(update => update.Action("EditingPopup_Update", "Home"))
.Destroy(update => update.Action("EditingPopup_Destroy", "Home"))
)
.Columns(cols =>
{
cols.Bound(p => p.RegistrationKey).Hidden(true);
cols.Bound(p => p.FirstName);
cols.Bound(p => p.LastName);
cols.Bound(p => p.CompanyName);
cols.Bound(p => p.ProvideAccomodations);
cols.Bound(p => p.RegistrationConfirmed);
cols.Command(command => { command.Edit(); command.Destroy(); });
cols.Command(command => command.Custom("Edit Details").Click("editDetails"));
}
)
.ClientDetailTemplateId("registration-client-template")
)
@(Html.Kendo().Window().Name("EditRegDetails")
.Title("Edit Registration")
.Visible(false)
.Modal(true)
.Draggable(true)
.Width(900)
)
function editDetails(e) {
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var window = $("#EditRegDetails").data("kendoWindow");
window.refresh({
url: '/Home/GetRegistrationDetails',
data: { id: dataItem.RegistrationKey }
});
window.center();
window.open();
}
Controller/Action:
public ActionResult GetRegistrationDetails(int id)
{
EventRegistrationModel eRegistrationModel = new EventRegistrationModel();
using (var eventTools = new WebDBEntities())
{
WebEventRegistration reg = eventTools.WebEventRegistrations.Where(p => p.RegistrationKey == id).FirstOrDefault();
AdditionalInfo ai = new AdditionalInfo();
var serializer = new JavaScriptSerializer();
if (reg != null && (reg.FirstName != null && reg.FirstName != ""))
{
eRegistrationModel.AddressLine1 = reg.AddressLine1;
eRegistrationModel.AddressLine2 = reg.AddressLine2;
eRegistrationModel.City = reg.City;
eRegistrationModel.CompanyName = reg.CompanyName;
eRegistrationModel.EmailAddress = reg.EmailAddress;
eRegistrationModel.EventDetails = serializer.Deserialize<
AdditionalInfo
>(reg.EventDetails);
eRegistrationModel.EventName = reg.EventName;
eRegistrationModel.FirstName = reg.FirstName;
eRegistrationModel.JobTitle = reg.JobTitle;
eRegistrationModel.LastName = reg.LastName;
eRegistrationModel.MiddileInitial = reg.MiddileInitial;
eRegistrationModel.PhoneNumber = reg.PhoneNumber;
eRegistrationModel.PostalCode = reg.PostalCode;
eRegistrationModel.ProvideAccomodations = reg.ProvideAccomodations == 0 ? true : false;
eRegistrationModel.ReferrerIpAddress = reg.ReferrerIpAddress;
eRegistrationModel.RegistrationConfirmed = reg.RegistrationConfirmed == 0 ? true : false;
eRegistrationModel.RegistrationDate = reg.RegistrationDate;
eRegistrationModel.State = reg.State;
eRegistrationModel.RegistrationKey = reg.RegistrationKey;
}
else
{
return View("Error");
}
}
return PartialView("EditRegistrationDetails", eRegistrationModel);
}
Partial view with dropdown:
@model GMCEventRegistrationTools.Models.EventRegistrationModel
@using (Html.BeginForm("SaveRegistrationEdit", "Home", FormMethod.Post, new { id = "editregis-form" }))
{
most fields removed for brevity
<
div
class
=
"form-group"
>
@Html.LabelFor(model => model.State)
@(Html.Kendo().DropDownListFor(model => model.State).Name("State")
.HtmlAttributes(new { @class = "form-control textbox-size stateslist"})
.DataTextField("State").DataValueField("StateCode")
.DataSource(source => {
source.Read(read =>
{
read.Action("GetStates", "Home");
});
})
.Value(Model.State)
.Events(events => events.DataBound("setSelectedState"))
)
<
p
class
=
"error"
>@Html.ValidationMessageFor(model => model.State)</
p
>
</
div
>