I am using a Kendo.Filter object like the following to filter results in a Kendo Grid:
@(Html.Kendo().Filter<CustomPersonClass>()
.Name("personFilter")
.DataSource("peopleDS")
.ApplyButton(false)
.Fields(f =>
{
f.Add(p => p.LastName).Label("Last Name");
f.Add(p => p.FirstName).Label("First Name");
f.Add(p => p.MiddleName).Label("Middle Name"); f.Add(p => p.StartDate).Label("Start Date").Operators(o => o.Date(d => d.Eq("Is equal to").Gte("Greater than equal").Lte("Less than equal")));
})
)
I have helper code to handle the toolbar in my Kendo Grid like the following, :
@helper ToolbarTemplate()
{
<button class="k-button k-button-solid k-button-solid-base" id="applyFilter"><span class="k-icon k-i-filter"></span>Apply Filter</button>
<button class="k-button k-button-solid k-button-solid-base" id="clearFilter">Reset</button>
<button class="k-button k-grid-excel k-button-solid k-button-solid-base"><span class="k-icon k-i-excel"></span>Export to Excel</button>
}
I also have some JavaScript in a function to apply the filter when the Apply Filter button is clicked, as seen here:
$("#applyFilter").click(function (e) { //e.preventDefault(); var myFilter = $("#personFilter").getKendoFilter(); localStorage["kendo-person-filter-options"] = kendo.stringify(myFilter.getOptions().expression); myFilter.applyFilter(); });
The problem I am having is if I enter an invalid Leap Year date (e.g. 2/29/2003, since 2023 didn't have a February 29th), I get no data back; however, if I enter a valid Leap Year (e.g. 2/29/2004), my Kendo Grid will show data. Is there a way to validate the date that is being entered manually into a DatePicker field used for filtering? That is, if I use the DatePicker, it will not show me 2/29/2003 as an option, but if I type in 2/29/2003 and click Apply Filter, it doesn't throw any kind of error about 2/29/2003 being invalid.
I have an ASP.NET MVC project, using Kendo MVC 2023 R1, and I am using a strict CSP policy. However, the following code is not working
<add name="Content-Security-Policy" value="script-src 'self'
Index.Cshml
<script id="editor-template" type="text/x-kendo-template">
@Html.Kendo().TextBox().Name("FieldExcel").Enable(false).ToClientTemplate()
</script>
in JS
$(document).ready(() => {
$(".list-item-icon").on("click", e => {
$("#edit-dialog").kendoWindow({
height: 320,
width: 415,
title: 'Editar',
visible: false
});
var thtml = $("#editor-template").html();
var htmlEncode = kendo.htmlEncode;
var templateString = () => thtml;
var template = kendo.template(templateString);
var data = { firstName: "Todd", age: 16 };
var result = template(data);
//var template = kendo.template($("#editor-template").html());
$("#edit-dialog").data("kendoWindow").content(template({})).open().center();
The result is a simple input text instead of a disabled Kendo control.
I have been trying many ways, and I can't find a solutionHi,
I am working on a grid having inline edit functionality. I am trying to create a dropdown which display a list of persons, however, I want to save the email id of the person in our backend SQL DB.
I am trying to implement this with editor template approach -
I have tried the below code -
Grid:
columns.Bound(mm => mm.Person).Title("Assigned To").EditorTemplateName("PersonList").HeaderHtmlAttributes(new { style = "white-space: normal" });
PersonList.chstml
@(Html.Kendo()
.DropDownList()
.Filter("contains")
.Name("Person")
.DataTextField("Name")
.DataValueField("Email")
.DataSource(dataSource =>
{
dataSource.Read(read => read.Action("GetPeopleByArea", "Common").Data("getPeopleByArea"))
.ServerFiltering(true);
})
//.HtmlAttributes(new { required = "required", data_required_msg = "Select Person Name", style = "width: 100px" })
.ValuePrimitive(true)
.AutoWidth(true)
.OptionLabel("-- Please Select --")
)
function getPeopleByArea() {
var grid = $("#Grid").data("kendoGrid");
var dataItem = grid.dataItem("tr.k-grid-edit-row");
return {
Area: dataItem.Area
};
}
When I edit the grid the dropdown work list works fine and it displays the filtered list of people as expected. However, Instead of the email id the record is getting updated with Null or blanks in the backend table.
However, this approach works fine if I do not use getPeopleByArea function to filter the area based on certain conditions and use a different controller function to get the whole list.
Also, if I am using .DataTextField("Name") and .DataValueField("ID"), ID is getting stored and same is getting displayed on the grid instead of the Name.
What am I doing wrong here ? Can anyone please suggest.
Please let me know if you have any questions.
Thanks
Saurabh