I have a simple grid with Add/Edit functionality enabled and it's using the popup grid edit mode. When in that mode, a drop down is not setting the selected value as it should. If I use inline, everything works like a charm.
When the add/edit form is rendered, the selected value for the record is not being set in the drop down. When you submit the form, the value is always correct. The default value is sent when the selected value drop down list was not changed. The same goes for editing (value being the previously saved value).
This behavior seems to only happen on combo boxes and drop down lists and it's limited to the popup form. Below is my view, editor template, and the model. The field in question is Chaperone.
Thank You!
View:
<%= Html.Kendo().Grid<
ChaperoneLogViewModel
>()
.Name("ChaperoneLog")
.DataSource(datasource => datasource.Ajax()
.Read("Select", "ChaperoneLogList")
.Update("Update", "ChaperoneLogList")
.Create("Create", "ChaperoneLogList")
.Destroy("Delete", "ChaperoneLogList")
.Model(model => {
model.Id(field => field.Id);
model.Field(field => field.Name);
model.Field(field => field.Chaperone)
.DefaultValue(HttpContext.Current.User.Identity.Name);
})
.Filter(filter =>
{
filter.Add(field => field.Date)
.IsLessThanOrEqualTo(DateTime.Now)
.And()
.IsGreaterThanOrEqualTo(DateTime.Now.AddDays(-7));
filter.Add(field => field.Chaperone)
.IsEqualTo(HttpContext.Current.User.Identity.Name);
})
.PageSize(20)
)
.EnableCustomBinding(true)
.ToolBar(toolbar =>
{
toolbar.Create();
toolbar.Excel();
})
.Excel(excel =>
{
excel.AllPages(true);
excel.FileName("ChaperoneList_" + DateTime.Now.ToShortDateString()+".xlsx");
excel.Filterable(true);
})
.Events(events => events.Edit("loadResearch"))
.Columns(columns =>
{
columns.Command(commands =>
{
commands.Destroy().Text(" ");
commands.Edit().Text(" ").CancelText(" ").UpdateText(" ");
}).Width(80);
columns.Bound(column => column.Date).AsDate().Width(90);
columns.Bound(column => column.Name).Title("Topic");
columns.Bound(column => column.Symbol).Title("S").Width(60);
columns.Bound(column => column.BankerListDisp);
columns.Bound(column => column.ResearchListDisp);
columns.Bound(column => column.Other);
columns.Bound(column => column.Chaperone).ClientTemplate("#= ChaperoneDisplay #").Title("C").Width(60);
})
.Pageable()
.Sortable(sort => sort.SortMode(Kendo.Mvc.UI.GridSortMode.SingleColumn))
.Filterable(filter => filter.Mode(GridFilterMode.Menu))
.Scrollable(scroll => scroll.Height("auto"))
.Editable(edit => edit.Mode(Kendo.Mvc.UI.GridEditMode.InLine))
.Selectable()
.Resizable(resizing => resizing.Columns(true))
%>
EditorTemplate:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%
var users = Roles.GetUsersInRole("StandardUser");
var profs = users.Select(WebProfile.GetProfile).ToList();
var list = new List<
SelectListItem
>();
list.AddRange(profs.Select(
x => new SelectListItem
{
Text = String.Format("{1}, {0}", x.FirstName, x.LastName),
Value = Html.Encode(x.UserName)
})
);
list = list.OrderBy(x => x.Text).ToList();
%>
<%=Html.Kendo().DropDownList()
.Name("Chaperone")
.DataValueField("Value")
.DataTextField("Text")
.HtmlAttributes(new {style = "width: 160px; "})
.BindTo(list)
.OptionLabel("Select a Chaperone...")
.Value(Model.ToString())
%>
Model:
namespace CyfPortal.ApplicationServices.ViewModels
{
[DisplayName("Chaperone Log")]
public class ChaperoneLogViewModel : ViewModel<
ChaperoneLog
>
{
public ChaperoneLogViewModel()
{
Chaperone = HttpContext.Current.User.Identity.Name;
}
[ScaffoldColumn(false)]
[Map("Id", ReadOnly = true)]
public int Id { get; set; }
[DataType(DataType.Date)]
public DateTime Date { get; set; }
[UIHint("Symbols")]
public string Symbol { get; set; }
[Display(Name = "Topic")]
public string Name { get; set; }
[UIHint("SeniorBankers")]
public string Banker { get; set; }
public string AddBanker { get; set; }
[UIHint("Analysts")]
public string Research { get; set; }
public string AddResearch { get; set; }
[DataType(DataType.MultilineText)]
public string Other { get; set; }
[UIHint("Chaperone")]
public string Chaperone { get; set; }
public string ChaperoneDisplay
{
get
{
var prof = WebProfile.GetProfile(Chaperone);
var fi = "";
var li = "";
if (!String.IsNullOrEmpty(prof.FirstName)) fi = prof.FirstName.Substring(0, 1);
if (!String.IsNullOrEmpty(prof.LastName)) li = prof.LastName.Substring(0, 1);
return fi+li;
}
}
public string[] ResearchList
{
get
{
if (String.IsNullOrEmpty(Research))
{
return new string[] { };
}
return Research.Split(',');
}
}
[Display(Name = "Research")]
public string ResearchListDisp
{
get
{
if (String.IsNullOrEmpty(AddResearch)) return Research;
return Research + ", " + AddResearch;
}
}
public string[] BankerList
{
get
{
if (String.IsNullOrEmpty(Banker))
{
return new string[] { };
}
return Banker.Split(',');
}
}
[Display(Name = "Banker")]
public string BankerListDisp
{
get
{
if (String.IsNullOrEmpty(AddBanker)) return Banker;
return Banker + ", " + AddBanker;
}
}
}
}
I have declared a DatePicker. Normally, the popup would only open when the user clicks the button and the user can free hand a date into the text field. I want to alter these two behaviors.
1. When the user mouse clicks anywhere on the DatePicker, even in the text field, the popup opens.
2. Prevent the user from typing anything into the text field. The user will be forced to use the popup to select a date.
Hi ,
I have a kendo dropdownlist outside grid and toolbar button inside grid, I need to validate the dropdownlist selection when toolbar button inside grid is clicked , is there any way to validate the dropdowlist when no records selected from toolbar click, Help will be appreciated!!!
Regards
Mohmmed
I saw that when sending the Model state on the read method of the grid it is ignored? Is this function as design? How to implement this on every grid
public
async Task<ActionResult> GetViewModels([DataSourceRequest]DataSourceRequest request)
{
var models = System.Array.Empty<ViewModel>();
ModelState.AddModelError(
string
.Empty,
"Just to test something"
);
var result = await models.ToDataSourceResultAsync(request, ModelState).ConfigureAwait(
false
);
return
Json(result);
}
Is possible set the background color of each item in list of multiselect object?
Thank you
I have a form with a couple of switchfor controls on them. They are bond to Boolean properties of my model. When calling a reset on the form, these controls do not revert back to the original value as expected.
<div class="col-1">
<div class="form-group">
<label asp-for="DoNotContact">Ne pas contacter</label><br />
@(Html.Kendo().SwitchFor(m => m.DoNotContact) )
</div>
</div>
What am I doing wrong?
I like the look of the new "modern" interface for the datetimepicker. As seen on the Demo page the picker does not have any values for the hours or AM/PM.
https://demos.telerik.com/aspnet-mvc/datetimepicker/component-type
Is this a bug? or is there something you need to do to allow picking of hours?
I have attached a screenshot for reference.
I have Kendo MVC Grid in a view,
I would like to navigate from view to another view that holds Kendo Grid report.
@Html.ActionLink("Report", "GridList_Read", "Grid")
The above code is displaying not formatted plain text content.
How do call grid controller from a mvc view?
Thank you
There is a way to declare a stand-alone data source in Kendo and initialize it with an array. https://docs.telerik.com/kendo-ui/framework/datasource/basic-usage#creating-local-data-sources
Is there an equivalent MVC helper for this?