Hello,
I'm using Kendo Editor to handle the rich text content. We have a strange issue when the pasted html contains the attribute value with the keyword " on". Please find below the description.
<span data-sheets-userformat="{"2":15037,"3":{"1":0},"5":{"1":[{"1":2,"2":0,"5":{"1":2,"2":0}},{"1":0,"2":0,"3":3},{"1":1,"2":0,"4":1}]},"6":{"1":[{"1":2,"2":0,"5":{"1":2,"2":0}},{"1":0,"2":0,"3":3},{"1":1,"2":0,"4":1}]},"7":{"1":[{"1":2,"2":0,"5":{"1":2,"2":0}},{"1":0,"2":0,"3":3},{"1":1,"2":0,"4":1}]},"8":{"1":[{"1":2,"2":0,"5":{"1":2,"2":0}},{"1":0,"2":0,"3":3},{"1":1,"2":0,"4":1}]},"10":2,"12":0,"14":{"1":2,"2":0},"15":"Calibri","16":11}" data-sheets-value="{"1":2,"2":"Just once"}" style="font-size:11pt;font-family:Calibri, Arial;">Just once</span><br />
Uncaught DOMException: Failed to execute 'setAttribute' on 'Element': 'k-script-once"}"' is not a valid attribute name.
Problem appears to be in the function "_preventScriptExecution" and the statement : this.setAttribute('k-script-' + name, attribute.value);
Note: This issue happens ONLY when we have html and the attributes are having the keyword " on" (“space” followed by text “on”)
Example:
attribute="{"key":" on"}"
data-sheets-value="{"2":"Just once"}"
I have attached the sample screenshots and the html input data.
Could you please let me know if there is a fix for this issue?
Thanks in advance for your feedback.
Regards,
Puru
I know how to call a client-side javascript function to get parameters to pass to the the controller for the various actions of a grid. But what if I need to call a javascript function that itself takes a parameter? How to I pass a value from the grid's action, data methods to the javascript function?
Thank you in advance for your advice.
//grid setup... .Create(update => update.Action("Add", "MyController).Data("GetParams")) .Update(update => update.Action("Update", "MyController").Data("GetParams")) ... function GetParams(fSomeFlag) { var retVal; if (fSomeFlag = true) retVal = "someValForCreate"; else retVal = "someValForUpdate"; return { param1 : retVal, param2: "someOtherValue" };
Hello,
I have implemented the ASP.NET MVC Gantt into my project. I am having a slight issue when adding to the grid.
After adding, the entry for the Task shows a skinny bar with no text, when in fact database shows it does have text for the entry. Hovering over it shows the correct text. Picture below:
Refreshing the grid does not update it, although it appears totally correct in the database. Thanks for any help. Side question - how can I change the theme of my grid? I saw there are many theme options.
Hi..
I am experiencing that when i create an event via the popup on scheduler, and save, a debug breakpoint placed in the Create method of the controller, can be observed to fire between 2 and 4 times. i checked the database and it indeed runs the whole save process 2 or 4 times with the same data.
My view has the following code:
<div id="citizenAppointmentCalender" class="calenderContainer">
@(Html.Kendo().Scheduler<AppointmentTaskViewModel>()
.Name("appointmentsCalender")
.Height(820)
.Editable(e => {
e.TemplateName("CitizenAppointmentsEditorPartialView");
e.EditRecurringMode(SchedulerEditRecurringMode.Series);
})
.DateHeaderTemplate("<strong>#=kendo.toString(date, 'ddd dd-MMM')#</strong>")
.AllDaySlot(false)
.Timezone("Europe/Copenhagen")
.EventTemplate("<div class='eventBox' style='background-color:#= BackColor #; color:#= FontColor #;'><div class='eventInner'><span>#= title #</span></div><div class='eventInner'><span>#= description #</span></div></div>")
.Views(views => {
views.DayView();
views.WeekView(x => x.Selected(true));
views.MonthView();
})
.Events(x => {
x.Edit("caed_Dialog_Edit");
x.Save("caed_Dialog_Save");
})
.DataSource(d => {
d.Model(m => { m.Id(f => f.ID); });
d.Read(read => read.Action("Read", "CitizenDashboard").Type(HttpVerbs.Post));
d.Create("Create", "CitizenDashboard");
d.Destroy("Destroy", "CitizenDashboard");
d.Update("Update", "CitizenDashboard");
})
)
</div>
The controller code:
public virtual JsonResult Create([DataSourceRequest] DataSourceRequest request, AppointmentTaskViewModel task) { if (ModelState.IsValid) { appointmentService.Insert(task, ModelState); } return Json(new[] { task }.ToDataSourceResult(request, ModelState)); }
Finally the javascript for the "edit" and "save" events:
function caed_Dialog_Edit(e) {
$("#caed_eventType_private")[0].checked = false;
$("#caed_eventType_medical")[0].checked = false;
$("#caed_eventTypes_PrivateBox")[0].classList.add("hide");
if (e.event.Type == 3) {
$("#caed_eventType_private")[0].checked = true;
$("#caed_eventTypes_PrivateBox")[0].classList.remove("hide");
} else if (e.event.Type == 2) {
$("#caed_eventType_medical")[0].checked = true;
}
var buttons = e.container[0].children[0].children[1];
if (e.event.IsNexusAppointment) {
$("#caed_Title")[0].setAttribute("disabled", "disabled");
$("#caed_Description")[0].setAttribute("disabled", "disabled");
$("#caed_startDate").data("kendoDateTimePicker").enable(false);
$("#caed_endDate").data("kendoDateTimePicker").enable(false);
$("#caed_eventType_medical")[0].setAttribute("disabled", "disabled");
$("#caed_eventType_private")[0].setAttribute("disabled", "disabled");
$("#caed_isPersonal")[0].setAttribute("disabled", "disabled");
$("#caed_recurrence").data("kendoRecurrenceEditor").element[0].disabled = true;
buttons.children[0].classList.add("hide"); // Save btn
buttons.children[1].innerText = "OK";
if (buttons.children.length >= 3)
buttons.children[2].classList.add("hide"); // Delete btn
} else {
$("#caed_Title")[0].removeAttribute("disabled");
$("#caed_Description")[0].removeAttribute("disabled");
$("#caed_startDate").data("kendoDateTimePicker").enable(true);
$("#caed_endDate").data("kendoDateTimePicker").enable(true);
$("#caed_eventType_medical")[0].removeAttribute("disabled");
$("#caed_eventType_private")[0].removeAttribute("disabled");
$("#caed_isPersonal")[0].removeAttribute("disabled");
$("#caed_recurrence").data("kendoRecurrenceEditor").element[0].disabled = false;
buttons.children[0].classList.remove("hide"); // Save btn
buttons.children[1].innerText = "Fortryd";
if (buttons.children.length >= 3)
buttons.children[2].classList.remove("hide"); // Delete btn
}
}
function caed_Dialog_Save(e) {
if (e.event.caed_eventType_radio)
e.event.Type = parseInt(e.event.caed_eventType_radio);
if (e.event.Type == 3) {
e.event.IsPersonal = e.event.caed_isPersonal ? e.event.caed_isPersonal : false;
e.event.BackColor = "#ffa500";
e.event.FontColor = "#fff";
} else if (e.event.Type == 2) {
e.event.BackColor = "#F02222";
e.event.FontColor = "#fff";
}
var scheduler = $("#appointmentsCalender").data("kendoScheduler");
scheduler.dataSource.sync();
}
With these 3 snippets of code.. you can duplicate the issue. No need for a sample project. The "Insert" method simply puts the data from the model into an entity framework object and saveChanges is called, nothing more. But by then its already reproducible.
So just make a new event and press save. Remember to put a breakpoint at the start of the create method.
HOW can i prevent this from happening?
We're using a virtualized MultiColumnComboBox including the filter functionality 'contains'.
Unfortunately a filter on an integer field throws an error 'FormatException' on ToDataSourceResult.
Is there a default way of making this work, or do we have to modify the DataSourceRequest manually?
If the latter, is there an example of how to do it?
a model is returned to the form in which parameter "Raion" bool has a value of true or false.
How to make it so that CheckBox itself takes the required value?
@(Html.Kendo().CheckBox().Name("Raion").Label("Выезд на район"))
public class ServiceViewModel
{
*****
public bool Raion { set; get; }
****
}
@model service.Models.ServiceViewModel@(Html.Kendo().CheckBox().Name("Raion").Label("Выезд на район"))
Good afternoon,
I've successfully managed to use PdfProcessing in a similar way to the demo but I want to include some error capture. What's the best way to return the error to the View and display it e.g. if the file doesn't exist?
[HttpPost]
public ActionResult Download_Document()
{
try
{
PdfFormatProvider formatProvider = new PdfFormatProvider();
formatProvider.ExportSettings.ImageQuality = ImageQuality.High;
byte[] renderedBytes = null;
using (MemoryStream ms = new MemoryStream())
{
RadFixedDocument document = CreatePdfDocument.CreateDocument();
formatProvider.Export(document, ms);
renderedBytes = ms.ToArray();
}
return File(renderedBytes, "application/pdf", "PdfDocument.pdf");
}
catch (Exception e)
{
return e.Message;
}
}
Kind regards,
Richard
HI,
I am working on the MVC.net (not core) application. used the few stuff from Kendo ui, like autocomplete and notification. Everything works fine on local and when deployed to the Azure without the automated CI/CD process.
Now when it came to the do the build for CI/CD I am getting the below error:
ResolveAssemblyReferences: Primary reference "Kendo.Mvc". ##[warning]C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2203,5): Warning MSB3245: Could not resolve this reference. Could not locate the assembly "Kendo.Mvc". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2203,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Kendo.Mvc". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [D:\a\1\s\MyApp\MyApp.csproj] For SearchPath "{HintPathFromItem}".
//Properties in Visual Studio for the dll
Although the code is running fine after deployment and on local but I noticed that the Telerick or Keno dlls that are sever in reference folder
are missing from the Package folder.
I am trying to use Kendo Grid in a razor view.
I have reference for the required css and js files in bundle.config:
bundles.Add(new StyleBundle("~/Content/kendo/css").Include(
"~/Content/kendo/kendo.common.min.css",
"~/Content/kendo/kendo.common-bootstrap.min.css",
"~/Content/kendo/kendo.bootstrap.min.css"
));
bundles.Add(new ScriptBundle("~/Scripts/kendo/js").Include(
"~/Scripts/kendo/jquery.min.js",
"~/Scripts/kendo/kendo.all.min.js",
"~/Scripts/kendo/kendo.aspnetmvc.min.js"
));
In the View I have this:
@using Kendo.Mvc.UI;
@using Kendo.Mvc.Extensions;
@model WebApplication.Models.TMS_Categories
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<div class="container">
<div class="row">
@(Html.Kendo().Grid<WebApplication.Models.TMS_Categories>()
.Name("CategoriesGrid")
.Selectable()
.Columns(columns =>
{
columns.Bound(c => c.ID).Width(50);
columns.Bound(c => c.PrimaryCategoryName).Title("P Name").Width(100);
columns.Bound(c => c.SecondaryCategoryName).Title("S Name").Width(100);
columns.Bound(c => c.PrimaryDescription).Title("Primary Desc").Width(100);
columns.Bound(c => c.SecondaryDescription).Title("Secnd Desc").Width(100);
columns.Bound(c => c.Code).Width(100);
columns.Bound(c => c.OrganizationID).Title("OrgID").Width(100);
columns.Bound(c => c.CreatedBy).Width(100);
columns.Bound(c => c.CreatedDate).Width(100);
columns.Bound(c => c.UpdatedBy).Width(100);
columns.Bound(c => c.UpdatedDate).Width(100);
columns.Bound(c => c.IsDeleted).Width(100);
columns.Bound(c => c.IsActive).Width(100);
columns.Bound(c => c.IsDefault).Width(100);
columns.Bound(c => c.CompanyID).Width(100);
columns.Bound(c => c.CategoryType).Width(100);
columns.Command(command =>
{
command.Edit();
command.Destroy();
}).Width(200);
})
.DataSource(dataSource => dataSource
.Ajax()
.Model(model =>
{
model.Id(cat => cat.ID);
model.Field(cat => cat.ID).Editable(false);
}
)
.Read(read => read.Action("GetAllCategories", "Categories"))
.Update(update => update.Action("UpdateCategory", "Categories"))
.Create(create => create.Action("Addcategory", "Categories"))
.Destroy(destroy => destroy.Action("DeleteCategory", "Categories"))
)
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.InLine))
.Sortable()
.Selectable()
.Pageable(pageable =>
{
pageable.Refresh(true);
pageable.PageSizes(true);
})
)
</div>
</div>
When I run the code on chrome I get an error in console and data is not bound with grid only column names are shown but not any data row is showing :
Uncaught TypeError: jQuery(...).kendoGrid is not a function
at HTMLDocument.<anonymous> (Index:54)
at i (jquery.min.js:2)
at Object.fireWith [as resolveWith] (jquery.min.js:2)
at Function.ready (jquery.min.js:2)
at HTMLDocument.K (jquery.min.js:2)
and also when i click Add New Record button I get the data in this form:
{"Data":[{"ID":1,"PrimaryCategoryName":"a","SecondaryCategoryName":"b","PrimaryDescription":"dsa","SecondaryDescription":"fewf","Code":"123","OrganizationID":1,"CreatedBy":1,"CreatedDate":"\/Date(1562439600000)\/","UpdatedBy":1,"UpdatedDate":"\/Date(1562439600000)\/","IsDeleted":false,"IsActive":true,"IsDefault":false,"CompanyID":2,"CategoryType":3},{"ID":2,"PrimaryCategoryName":"f","SecondaryCategoryName":"g","PrimaryDescription":"ddsf","SecondaryDescription":"gfh","Code":"434","OrganizationID":3,"CreatedBy":3,"CreatedDate":"\/Date(1562439600000)\/","UpdatedBy":3,"UpdatedDate":"\/Date(1562439600000)\/","IsDeleted":true,"IsActive":false,"IsDefault":false,"CompanyID":1,"CategoryType":2}],"Total":2,"AggregateResults":null,"Errors":null}
Any body here to help me?