I have a grid showing a list if items, with a checkbox to allow multiple rows to be selected. Virtual scrolling has been enabled, as there will be over 1000 items in the list.
I need to identify all selected rows as these will form the basis of a filter to be applied to another grid. I'm trying to use the getSelectedData method, but this keeps throwing the error:-
Uncaught TypeError: Cannot read properties of undefined (reading 'selectedRanges')
The grid definition is:-
@(Html.Kendo().Grid<InformaticsCommissioningHelper.Models.IPWLList>()
.Name("gridListNames")
.Columns(columns =>
{
columns.Select().Width(50);
columns.Bound(p => p.ListName).Title("List Name");
})
.PersistSelection()
.Events(e=>e.Change("listGridChange"))
.DataSource(dataSource => dataSource
.Ajax()
.Model(model => model.Id(p => p.ListName))
.PageSize(25)
.Sort(s =>
{
s.Add(a => a.ListName).Ascending();
})
.Read(read => read.Action("GetListNames", "SelectTest"))
)
.Sortable()
.Scrollable(scrollable => scrollable.Virtual(true))
.HtmlAttributes(new { style = "height: 400px;" })
)
There's a button that then runs the function:-
function test()
{
var grid = $("#gridListNames").data("kendoGrid");
console.log(grid.getSelectedData());
}
The project is using version v2023.2.606 .
I have tried using the change event to identify the selections, but this only works for the active page, which doesn't work for a scrollable grid.
I've just started using version v2023.2.606 and have a grid with a pop-up editor using an editor template.
This has several required fields (specified in the model), but on opening the window for a new record, the validation error tool tip is shown for the first field (image attached).
This wasn't the behavior in previous versions, which only fired the validation when the update button was clicked. How can I stop this happening?
The grid is:-
@(Html.Kendo().Grid<InformaticsCommissioningHelper.Models.Rule>()
.Name("grid")
.Events(e => e.Edit("onEdit"))
.Columns(columns =>
{
columns.Bound(p => p.ID).Title("ID").Width(120);
columns.Bound(p => p.RunOrder).Title("Order").Width(120);
columns.Bound(p => p.Description).Title("Name").Width(600);
columns.Bound(p => p.LastUpdateDate).Title("Last Updated").Width(150).Format("{0:g}");
columns.Command(command => { command.Edit(); command.Destroy(); });
})
//.ClientDetailTemplateId("subdetailsTemplate")
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.PopUp))
.Pageable(p => p.Refresh(true))
.Sortable()
.Filterable()
.DataSource(dataSource => dataSource
.Ajax()
.Model(m => m.Id(p => p.ID))
.PageSize(15)
.Events(e => e.Error("error"))
.Read(read => read.Action("RD_Rules", "Rules").Data("antiForgery"))
.Create(a => a.Action("InsertRule", "Rules"))
.Update(a => a.Action("UpdateRule", "Rules"))
.Destroy(a => a.Action("DeleteRule", "Rules"))
.Sort(s => s.Add(a => a.RunOrder).Ascending())
)
)
and the template is:-
@model InformaticsCommissioningHelper.Models.Rule
<div style="width:650px;">
@Html.ValidationSummary(true)
@Html.HiddenFor(c => c.ID)
<p>
<span class="lbllabel2">
Name:
</span>
@Html.Kendo().TextBoxFor(model => model.Description).Name("Description").HtmlAttributes(new { style = "width:250px", Maxlength = 75 })
@Html.ValidationMessageFor(model => model.Description)
</p>
<p>
<span class="lbllabel2">
Order:
</span>
<div style="width:150px;" class="float-start">
@Html.Kendo().NumericTextBoxFor(c => c.RunOrder).Spinners(false)
@Html.ValidationMessageFor(model => model.RunOrder)
</div>
</p>
<div style="clear:both"></div>
<p></p>
<p>
<span class="lbllabel2">
SQL:
</span>
@Html.Kendo().TextAreaFor(model => model.RuleSQL).Name("RuleSQL").HtmlAttributes(new { style = "width:470px; font-family:Courier New, Courier, monospace"}).Rows(5)
@Html.ValidationMessageFor(model => model.RuleSQL)
</p>
<p>
<span class="lbllabel2">
Comments:
</span>
@Html.Kendo().TextAreaFor(model => model.Comments).Name("Comments").HtmlAttributes(new { style = "width:470px;"}).Rows(3)
@Html.ValidationMessageFor(model => model.Comments)
</p>
Since the change in R2 2022, numeric text boxes now take up 100% of the width of their container, so the recommended way to set an elements width is with a DIV. However this is a block element, so how do I show a label (in a span) before the numeric text box on a single line?
Setting the div to inline, negates the width setting.
I'm using version v2023.2.606.
I currently have:-
<p>
<span class="lbllabel2">
Field Namew:
</span>
<div style="width:150px;">
@Html.Kendo().NumericTextBoxFor(c => c.Field)
@Html.ValidationMessageFor(model => model.RunOrder)
</div>
</p>
The only way I can see to get it working is with floats, which seems excessively complicated for such a simple (and I'd assume) common scenario.
I can say that the new versions since R2 2022 have proved extremely problematic and I have yet to see an up side to the changes.
Hi There,
Nested ListView requirement.
Is there any way we can implement nested listview for given design?
Thank You,
BDP
I have an ASP.NET solution that uses Telerik UI MVC 2018.2.620
I want to upgrade it to use Telerik UI MVC 2023.2.718
I installed Telerik UI MVC 2023.2.718, and then reinstalled Telerik UI MVC 2018.2.620
I don't have an Upgrade option to upgrade the solution. How can I use to upgrade tool to upgrade the solution?
Hi all,
I need a solution for ASP.NET MVC Grid Razor
i have a Grid InCell Edit Mode.
One Column Date
One Column as ForeignKey Column (Possible Values before Date: 01.07.2023 are [A, B, C] and At 01.07.2023 and later possible Values are [D, E]
Is there a solution how to change the selectlist by data of current row?
Regards
Gerd
Has anyone else noticed that neither the .Net core or MVC upload module works when run under iOS? https://www.telerik.com/aspnet-core-ui/upload
If you try and upload anything you can never click submit.
You can try it on the demo here on any iOS device -
This seems to have broken when the move was made to go to Sass from Less a few months ago. It worked fine in Less. With it being such a major component it is something that you would hope gets fixed very quickly.
Hi,
I first tried using a loop creating expansion panels which works fine on the face of it but each expansion panel needs to have a Rich Text Editor inside of it and it was not allowing me to click into the editor so I read it may be better to use a PanelBar to achieve what i need.
Basically what I need it to loop through a collection within the ViewModel and create a Panel Bar Item for each one. Each Panel Bar Item will generate 3 Rich Text Editors with Labels.
The markup shows no errors but when running I get "System.ArgumentOutOfRangeException: 'Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index'". This happens with even a single control referencing the index of the for loop e.g.:
An example of the code is:
@(Html.Kendo().PanelBar()
If I don't reference the i of the for loop within the content it works fine e.g.:
@(Html.Kendo().PanelBar()
</text>);
The reason I am using a 'for i =' loop instead of a foreach loop is because the collection was not being returned to the controller on post when I used a foreach loop but this method worked which could be down to my inexperience with MVC but I went with what worked.
The Expansion Panels worked great other than not being able to click into the Kendo().Editor() controls at all when they were inside the for loop. If I bound them to a control outside of the loop then they worked fine.
Any help would be greatly appreciated.