I have a scheduler which allows to add attendees
@(Html.Kendo().Scheduler<
AGAT.TSSM.Web.Models.Schedule.ScheduleViewModel
>()
.Name("scheduler")
.Date(DateTime.Today)
.StartTime(DateTime.Today.AddHours(7))
.EndTime(DateTime.Today.AddHours(21))
.WorkDayStart(8, 0, 0)
.WorkDayEnd(21, 0, 0)
.WorkWeekStart(1)
.WorkWeekEnd(0)
.Timezone("Etc/UTC")
.EventTemplateId("customEventTemplate")
.AllDayEventTemplateId("customAllDayTemplate")
.Views(views =>
{
views.DayView(d => d.DateHeaderTemplate("<
span
class
=
'k-link k-nav-day'
>#=kendo.toString(date, 'ddd dd/M')#</
span
>"));
views.WeekView(weekView => weekView.Selected(true).DateHeaderTemplate("<
span
class
=
'k-link k-nav-day'
>#=kendo.toString(date, 'ddd dd/M')#</
span
>"));
views.MonthView();
views.AgendaView();
})
.Editable(editable =>
{
editable.TemplateName("_ScheduleWindowTemplate");
})
.DataSource(d => d
.Model(m =>
{
m.Id(f => f.Id);
})
.Events(e => e.Error("error_handler"))
.Read("Read", "Schedule")
.Create("Create", "Schedule")
.Update("Update", "Schedule")
.Destroy("Delete","Schedule")
)
)
A pop up window comes from a template
@using AGAT.TSSM.Logic.Domain.Model.Schedule;
@using AGAT.TSSM.Web.Models.User;
@model AGAT.TSSM.Web.Models.Schedule.ScheduleViewModel
@{
//required in order to render validation attributes
ViewContext.FormContext = new FormContext();
}
@functions{
public Dictionary<
string
, object> generateDatePickerAttributes(
string elementId,
string fieldName,
string dataBindAttribute,
Dictionary<
string
, object> additionalAttributes = null)
{
Dictionary<
string
, object> datePickerAttributes = additionalAttributes != null ? new Dictionary<
string
, object>(additionalAttributes) : new Dictionary<
string
, object>();
datePickerAttributes["id"] = elementId;
datePickerAttributes["name"] = fieldName;
datePickerAttributes["data-bind"] = dataBindAttribute;
datePickerAttributes["required"] = "required";
datePickerAttributes["style"] = "z-index: inherit;";
return datePickerAttributes;
}
}
<
div
class
=
"k-edit-label"
>
@(Html.LabelFor(model => model.Title))
</
div
>
<
div
data-container-for
=
"title"
class
=
"k-edit-field"
>
@(Html.TextBoxFor(model => model.Title, new { @class = "k-textbox", data_bind = "value:title" }))
</
div
>
<
div
class
=
"k-edit-label"
>
@(Html.LabelFor(model => model.Location))
</
div
>
<
div
data-container-for
=
"title"
class
=
"k-edit-field"
>
@(Html.TextBoxFor(model => model.Location, new { @class = "k-textbox", data_bind = "value:Location" }))
</
div
>
<
div
class
=
"k-edit-label"
>
@(Html.LabelFor(model => model.IsAllDay))
</
div
>
<
div
data-container-for
=
"isAllDay"
class
=
"k-edit-field"
>
<
input
data-bind
=
"checked: isAllDay"
data-val
=
"true"
id
=
"IsAllDay"
name
=
"IsAllDay"
type
=
"checkbox"
/>
</
div
>
<
div
class
=
"k-edit-label"
>
@(Html.LabelFor(model => model.Start))
</
div
>
<
div
data-container-for
=
"start"
class
=
"k-edit-field"
>
@(Html.Kendo().DateTimePickerFor(model => model.Start)
.HtmlAttributes(generateDatePickerAttributes("startDateTime", "start", "value:start,invisible:isAllDay")))
@(Html.Kendo().DatePickerFor(model => model.Start)
.HtmlAttributes(generateDatePickerAttributes("startDate", "start", "value:start,visible:isAllDay")))
<
span
data-bind
=
"text: startTimezone"
></
span
>
<
span
data-for
=
"start"
class
=
"k-invalid-msg"
></
span
>
</
div
>
<
div
class
=
"k-edit-label"
>
@(Html.LabelFor(model => model.End))
</
div
>
<
div
data-container-for
=
"end"
class
=
"k-edit-field"
>
@(Html.Kendo().DateTimePickerFor(model => model.End)
.HtmlAttributes(generateDatePickerAttributes(
"endDateTime",
"end",
"value:end,invisible:isAllDay",
new Dictionary<
string
, object>() { { "data-dateCompare-msg", "Окончание должно быть позднее начала" } })))
@(Html.Kendo().DatePickerFor(model => model.End)
.HtmlAttributes(generateDatePickerAttributes(
"endDate",
"end",
"value:end,visible:isAllDay",
new Dictionary<
string
, object>() { { "data-dateCompare-msg", "Окончание должно быть позднее начала" } })))
<
span
data-bind
=
"text: endTimezone"
></
span
>
<
span
data-for
=
"end"
class
=
"k-invalid-msg"
></
span
>
</
div
>
<
div
class
=
"k-edit-label"
>
@(Html.LabelFor(model => model.RecurrenceRule))
</
div
>
<
div
data-container-for
=
"recurrenceRule"
class
=
"k-edit-field"
>
@(Html.Kendo().RecurrenceEditorFor(model => model.RecurrenceRule)
.HtmlAttributes(new { data_bind = "value:recurrenceRule" }))
</
div
>
<
div
class
=
"k-edit-label"
>
@(Html.LabelFor(model => model.ScheduleType))
</
div
>
<
div
data-container-for
=
"ScheduleType"
class
=
"k-edit-field"
>
@* @Html.DropDownListFor(m => m.ScheduleType, Model.ScheduleTypeList)*@
@(Html.Kendo().DropDownListFor(model => model.ScheduleType)
.HtmlAttributes(new { data_bind = "value:ScheduleType", style = "width: 200px" })
.DataTextField("Text")
.DataValueField("Value")
.OptionLabel("None")
.ValuePrimitive(true)
.Template("<
span
class
=
'k-scheduler-mark'
style
=
'background-color:\\#= data.Color?Color:'
' \\#'></
span
>\\#=Text\\#")
.Events(e => e.Change("scheduleTypeChange"))
.BindTo(new[] {
new { Text = "Обычное событие", Value = ScheduleType.GeneralSchedule, Color = "\\#6eb3fa" },
new { Text = "Работа над заявкой", Value = ScheduleType.WorkOnRequest, Color = "\\#D9534F" },
new { Text = "Работа над задачей", Value = ScheduleType.WorkOnTask, Color = "\\#5CB85C" },
new { Text = "Работа над проектом", Value = ScheduleType.WorkOnProject, Color = "\\#F0AD4E" },
new { Text = "Собрание", Value = ScheduleType.GroupMeeting, Color = "\\#f58a8a" }
}).ToClientTemplate()
)
</
div
>
<
div
id
=
"item-reference"
style
=
"display: none;"
>
<
div
class
=
"k-edit-label"
>
@(Html.LabelFor(model => model.ItemReference, new { id = "ref-label" }))
</
div
>
<
div
data-container-for
=
"title"
class
=
"k-edit-field"
>
@(Html.TextBoxFor(model => model.ItemReference, new { @class = "k-textbox", data_bind = "value:ItemReference" }))
</
div
>
</
div
>
<
div
id
=
"item-invitees"
>
<
div
class
=
"k-edit-label"
>
@(Html.LabelFor(model => model.ScheduleInvitees, new { id = "ref-label" }))
</
div
>
<
div
data-container-for
=
"title"
class
=
"k-edit-field"
>
@(Html.Kendo().MultiSelectFor(m => m.ScheduleInvitees)
.Name("ScheduleInvitees")
.HtmlAttributes(new { data_bind = "value:ScheduleInvitees" })
.DataTextField("Name")
.DataValueField("Id")
.TagTemplateId("tagTemplate")
.ItemTemplateId("itemTemplate")
.Filter("contains")
.AutoBind(true)
.ValuePrimitive(true)
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetInvitees", "Base");
})
.ServerFiltering(true);
})
.Value(Model.InvitedUsers)
)
</
div
>
</
div
>
My problem is that the multiselect sets new attendees but not reading them when I want to edit it
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetInvitees", "Base");
})
.ServerFiltering(true);
})
.Value(Model.InvitedUsers)
InvitesUsers come from my model and it is a SelectList and I set it like this:
InvitedUsers = users.ToSelectList(x => new ExtSelectItem
{
Selected = true,
Text = x.Name,
Value = x.Id.ToString()
}