Hello,
I am trying implement controls combo between TreeView and ListBox.
The available actions are Add - from TreeView to ListBox and Remove - only remove from the ListBox.
I am using simple buttons from both actions.
The problems after call ListBox.remove(..) are two:
1) the collection listBox.dataItems() remains the same - i.e. the item is deleted only from UI
2) the underlying select HTML controls remains the same - i.e. the MVC/Kenod validators validates the page even the ListBox seems empty
Here is my remove button handler:
function
removeFromListBox() {
var
listBox = $(
"#myListBox"
).data(
"kendoListBox"
);
var
selected = listBox.select();
// this is an array
listBox.remove(listBox.select());
// Does not deletes the actual data item
console.log(listBox.dataItems());
// listBox.dataItems() is not reduced
}
I've recently started working on a new ASP.NET Core project and one element I've been working on is using a Kendo UI grid with a custom button with a text of "Approve". I'm using the Kendo Bootstrap-v4 style but this seems to be causing issues with the button icons. In my grids the standard edit and delete buttons show with the correct icons but if I set my "Approve" button to have a .IconClass("k-i-check") I actually get the download icon. If I choose the "k-i-edit" .IconClass instead then i seem to get k-i-check. If I choose "k-i-checkmark-outline" I seem to get "k-i-email". Is this something I'm missing or an issue with the latest version of the files I have in place? I'm using "Kendo UI v2019.1.220". This is only on my development machine currently.
Css reference as below:
<
link
rel
=
"stylesheet"
href
=
"~/lib/kendo-ui/styles/kendo.bootstrap-v4.min.css"
/>
Grid column
columns.Command(command => { command.Edit(); command.Custom("Approve").Click("approveUser").IconClass("k-i-checkmark-outline"); }).Width(120);
Thanks in advance for any advice.
Hello,
I have a requirement where the user needs to be given the ability to enter custom text inside a ComboBox if the value is not already there. The ComboBox is bound to a model. I'm not sure what is the best way to accomplish this. Currently, in my controller I check to see if the Id of the entered text is equal to 0, and then I update the model data. I am able to add the new value to the database, afterwards however, I don't know how to refresh/rebind the combobox to show the newly entered data.
Here's my Html-Helper code for the ComboBox:
@(Html.Kendo().ComboBox()
.Name(
"SystemType"
)
.AutoBind(
true
)
.BindTo((System.Collections.IEnumerable)ViewData[
"SystemTypes"
])
.DataTextField(
"SystemTypeName"
)
.DataValueField(
"SystemTypeId"
)
.Filter(FilterType.Contains)
.HtmlAttributes(
new
{ style =
"width: 350px; background-color: white;"
})
.Placeholder(
"..."
)
.ClearButton(
false
))
Here's the code in my Controller to add a new value:
if
(asset.SystemTypeId == 1 || asset.SystemTypeId == 0)
{
string
SystemTypeName = Request.Form[
"SystemType"
];
if
(asset.SystemTypeId == 0 && !
string
.IsNullOrEmpty(SystemTypeName))
{
SystemType systemType =
new
SystemType()
{
ProjectId = Id,
SystemTypeName = SystemTypeName
};
_repository.AddSystemType(systemType);
}
else
{
ModelState.AddModelError(
"SystemTypeId"
,
"System Type is Required"
);
}
}
Any help is greatly appreciated. Thanks.
Shawn A.
For some reason the grid column headers have started to size larger than the default. I just commented out any styles for the grids in this application that I declared overriding the default and the issue remains.
I can use this style to change the background color but the height has no effect :
.k-grid-header .k-header
{
background-color: red;
height:20px;
}
Please see attached.
the telerik asp.net mvc grid has the @item to access the bound item inside a .Template . There seems to be no documentation on what the replacement is for asp.net core grids . How do we accomplish this? Can you give an example of a .Template that uses a value from the data
I've got a grid with InCell editing and I have only the Add and Save buttons in the header. The grid is in an iframe. The trouble I am having is when I click the batch save button the controller action in the Datasource is not getting called.
<
div
>
@(Html.Kendo().Window()
.Name("timecard")
.Modal(true)
.Actions(actions => actions.Close())
.Draggable(false)
.LoadContentFrom("Timecard")
.Events(events => events
.Close("timecard_OnClose")
.Refresh("timecard_OnIframeLoaded")
)
.Iframe(true)
.Width(1700)
.Height(800)
.Visible(false)
.Deferred(true)
)
</
div
>
function timecard_OnIframeLoaded(e)
{
$.ajax({
url: '@Url.Action("Timecard_Load", "Timecard")',
type: "POST",
datatype: "json",
data: { id: employee_key, weekEnding: week_ending},
success: timecard_LoadTimecardSuccess
});
}
<
div
id
=
"employeeTimecard"
>
@(Html.Kendo().Grid<
Timecard.Models.TimecardViewModel
>()
.Name("timecard")
.ToolBar(toolbar =>
{
toolbar.Create().Text("ADD").HtmlAttributes(new { title = "Add employee" });
toolbar.Save().Text("SAVE");
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Columns(columns =>
{
columns.Bound(p => p.Job).Filterable(false).Sortable(false).Width(115).EditorTemplateName("_InCellAutoCompleteEditor").Title("Job");
columns.Bound(p => p.Task).Filterable(false).Sortable(false).Width(50);
columns.Bound(p => p.TaskName).Filterable(false).Sortable(false).Width(150);
columns.Bound(p => p.SubTask).Filterable(false).Sortable(false).Width(75);
columns.Bound(p => p.SubTaskCompDate).Filterable(false).Sortable(false).Width(75);
columns.Bound(p => p.TravelPay).Filterable(false).Sortable(false).Width(75).Title("Travel Pay (Total)");
columns.Bound(p => p.SpecialPayRate).Filterable(false).Sortable(false).Width(75);
columns.Bound(p => p.Comment).Filterable(false).Sortable(false).Width(150);
columns.Bound(p => p.MonST).Filterable(false).Sortable(false).Format("{0:n1}").Title("Mon ST").Width(40);
columns.Bound(p => p.MonOT).Filterable(false).Sortable(false).Width(40);
columns.Bound(p => p.MonDT).Filterable(false).Sortable(false).Width(40);
columns.Bound(p => p.TueST).Filterable(false).Sortable(false).Width(40);
columns.Bound(p => p.TueOT).Filterable(false).Sortable(false).Width(40);
columns.Bound(p => p.TueDT).Filterable(false).Sortable(false).Width(40);
columns.Bound(p => p.WedST).Filterable(false).Sortable(false).Width(40);
columns.Bound(p => p.WedOT).Filterable(false).Sortable(false).Width(40);
columns.Bound(p => p.WedDT).Filterable(false).Sortable(false).Width(40);
columns.Bound(p => p.ThuST).Filterable(false).Sortable(false).Width(40);
columns.Bound(p => p.ThuOT).Filterable(false).Sortable(false).Width(40);
columns.Bound(p => p.ThuDT).Filterable(false).Sortable(false).Width(40);
columns.Bound(p => p.FriST).Filterable(false).Sortable(false).Width(40);
columns.Bound(p => p.FriOT).Filterable(false).Sortable(false).Width(40);
columns.Bound(p => p.FriDT).Filterable(false).Sortable(false).Width(40);
columns.Bound(p => p.SatST).Filterable(false).Sortable(false).Hidden(true).Width(40);
columns.Bound(p => p.SatOT).Filterable(false).Sortable(false).Width(40);
columns.Bound(p => p.SatDT).Filterable(false).Sortable(false).Width(40);
columns.Bound(p => p.SunST).Filterable(false).Sortable(false).Hidden(true).Width(40);
columns.Bound(p => p.SunOT).Filterable(false).Sortable(false).Hidden(true).Width(40);
columns.Bound(p => p.SunDT).Filterable(false).Sortable(false).Width(40);
columns.Command(command =>
{
command.Destroy().HtmlAttributes(new { title = "Delete highlighted employee"});
}).Title("Options").Width(100);
})
.Sortable()
.Scrollable()
.Filterable()
.HtmlAttributes(new { style = "height:650px;width:1615px;" })
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.PageSize(100)
.Model(model => model.Id(p => p.EmployeeCode))
.Update(update => update.Action("Timecard_Update", "Timecard"))
)
)
</
div
>
Hi
Can anyone help?
How do I include filter id and forgeryToken in Cascading DropDownList?
Thanks in advance.
@(Html.Kendo().DropDownList()
.Name("Transferee")
.HtmlAttributes(new { style = "width:100%" })
.OptionLabel("Select Transferee")
.DataTextField("UName")
.DataValueField("IContactId")
.Filter(FilterType.Contains)
.DataSource(dataSource => dataSource
.Ajax()
.Read(r => r.Url("?handler=Transferee").Data("forgeryToken").Data("filterAgency"))
.Events(e => e.Error("onError").RequestEnd("onRequestEnd")))
.Enable(false)
.AutoBind(false)
.CascadeFrom("Agency")
)