Stack overflow (SO) has a pretty good discussion of the database operations that have to be performed in order to persist user defined row order based on their sortable interactions with grid.
http://stackoverflow.com/questions/330482/best-way-to-save-a-ordered-list-to-the-database-while-keeping-the-ordering
The domain I am working in is the 1-many data design for Master/Detail or Container/Element relationships in SQL server. The master and detail records have identity keys and the detail record foreign keys to the master.
My take away is that the display order can be persisted in two ways.
1-1 persistence data
This SO answer indicates three database operations are required to maintain the sortable state on a per sortable change event basis
1-many persistence data as a comma separated list of detail values, constructed from either the detail ids or some other unique over the detail records of a master
This SO answer calls this approach pragmatic, and this answer talks about separate tables
I was wondering if anyone has an example VS solution demonstrating remote persistence of sortable ordering.
Also would like to hear other ideas.
Hello all,
This is more of a general question so I have opted to not include too much code with this question. I can provide more if it will help find a good solution.
I have an existing tab layout where the tabs link to asp:panels in the page that in turn render a TabStrip and a Grid below:
Html.RenderAction("GetTabStrip", new RouteValueDictionary { { ..., ...} });
Html.RenderPartial("Grid", Model["Grade"], new ViewDataDictionary(this.ViewData) { { "gridName", "..." }, { "dsReadAction", "..." } });
The tab layout basically serves as a TabStrip before we adopted the ASP.NET MVC flavour of Telerik. I have two such tabs in this layout that both render a TabStrip and Grid like above.
The first TabStrip works great - I am able to scroll horizontally (since there are a lot of tabs), and the content is shown as expected. But the second TabStrip does not scroll and the content does not show up. The k-tabstrip-items list elements seem to be different between the two TabStrips. Here is an li element from the first TabStrip:
<li class="k-item k-state-default" role="tab" aria-controls="tabstrip-2"><span class="k-loading k-complete"></span><a class="k-link" href="#tabstrip-2">New York - i really hope the scrolling works</a></li>
...and from the second TabStrip:
<li class="k-item k-state-default" ><a class="k-link" href="#tabstrip-2">New York - i really hope the scrolling works</a></li>
...so the second element is missing the following attributes and span tag:
role="tab" aria-controls="tabstrip-2"><span class="k-loading k-complete"></span>
I believe this could be the source of my issues, but I am unsure if this implementation will even work.
Thanks for reading - any feedback is appreciated.

Hi,
I'd like my text column to recognise line breaks. I've seen this post:
http://www.telerik.com/forums/line-breaks-in-grid-data
but I'm displaying the column using the following format:
columns.Bound(c => c.NoteContent).Title("Note").Width(300);
How would I modify the content so that it replaces '\n' with '<br>'?
Thanks
Tim
In my application I have a search function that uses additional parameters passed into the datasource, which works great! However, after getting results and clicking into one, and then going Back in the browser and searching again, I get the following error :
Uncaught TypeError: Cannot read property 'dataSource' of undefined
Any ideas?
Hello,
currently I have a trial version of UI for ASP.NET MVC and I am working on a test web application. My goal is to design a simple page with an editor widget on it. I would like to integrate into the toolbar several dropdownlists (about 5). The dropdownlist should work similarly to the 'insert html' snippet.
For that purpose I would:
1. need customer labels/titles for the dropdownlists
2. need to use a remote datasource (table form an azure sql db) to populate the dropdownlists
3. need an event that places the selected item of the dropdownlist into the editor box at the cursor position
I studied the documentation for the editor widget but was not able find out wether my goal can be realized.
If someone could give me advice about the feasibiltiy of and how to realize my goal.
Thanks in advance.
Manfred
Hi Team,
When I try to use
$(document).ready(function () {
$("#grid2").data("kendoGrid").dataSource.filter({ logic: "and", filters: [{ field: "Title", operator: "contains", value: "nurse" }] })
});
I got an error of "Cannot read property 'dataSource' of undefined at HTMLDocument.eval".
The following is my grid:
@(Html.Kendo().Grid(Model)
.Name("grid2")
.Columns(columns =>
{
columns.Command(command => command.Custom("Add").Click("AddToTeam")).Width(40);
columns.Bound(p => p.StaffItem.FullName).Title("Name").Filterable(ftb => ftb.Cell(cell => cell.Operator("contains")));
columns.Bound(p => p.StaffItem.JobTitleDesc).Title("Title").Filterable(ftb => ftb.Cell(cell => cell.Operator("contains")));
})
.Pageable()
.Sortable()
.Filterable(ftb=>ftb
.Extra(false)
.Operators(operators => operators
.ForString(str => str.Clear()
.Contains("Contains")
.IsEqualTo("Is equal to")
.IsNotEqualTo("Is not equal to")
)))
.DataSource(d => d
.Ajax()
//.Filter(f=>f.Add(a=>a.StaffItem.JobTitleDesc).Contains("nurse"))
.ServerOperation(false)
.PageSize(8)
)
.Resizable(resize => resize.Columns(true))
.Reorderable(reorder => reorder.Columns(true))
)

I have a tree View with hierarchical data source which is located left side of the screen. The size of hierarchical data source is not known and it can overflow the page.
I want to scroll only treeView(not the whole page) and I can do it like that:
#treeView{
overflow-y: scroll;
height: 800px;
}
.html{
overflow: hidden;
}
However my code will be run several devices and I do not want to give a division static height. Is there a way to give height to a division after doing some calculations?
@(Html.Kendo().Grid<PendDetailRecordDTO>() .Name("pendDetailRecord_grid") .Columns(columns => { columns.Bound(c => c.DetailRecord.ID).HeaderTemplate(@<input type="checkbox" id="selectAll" />) .ClientTemplate(@" # if (StatusText=='Failed') { # <input type=""checkbox"" class=""app_select"" data-refid='#: DetailRecord.ID #'/> # } # ").Sortable(false).Width(20); columns.Bound(c => c.DetailRecord.StorageLoc).Title("Storage Location").Width(105); columns.Bound(c => c.StorageLocationText).Title("Store Name").Sortable(false).Width(105); columns.Bound(c => c.DetailRecord.MainMaterialNo).Title("Main Stockcode").Sortable(true).Width(95); columns.Bound(c => c.DetailRecord.Qty).Title("Qty").Sortable(true).Width(35); columns.Bound(c => c.DetailRecord.ErrMsg).Title("Error Message").Sortable(false); columns.Bound(c => c.StatusText).Title("Status").Sortable(false).Width(55); columns.Bound(c => c.DocNo).Title("Doc No").Sortable(false).Width(75); columns.Bound(c => c.FileName).Title("File Name").Sortable(true).Width(250); } ) .Pageable() .Sortable(sort => sort.AllowUnsort(false)) .Scrollable(scr => scr.Height(400)) .Resizable(resizable => resizable.Columns(true)) .DataSource(dataSource => dataSource.Ajax() .PageSize(20) .Batch(true) .ServerOperation(true) .Read(read => read.Action("GetPendDetailRecord", "Inventory", new { stockCode = Model.StockCode, storeID = Model.StoreID, fromDate = Model.FromDate, toDate = Model.ToDate, status = (Model.Status == null) ? string.Empty : string.Join(",", Model.Status), error = Model.Error})) ) .ClientDetailTemplateId("DetailSectionTemplate") )@(Html.Kendo().Grid<PendDetailSectionDTO>() .Name("pendDetailSectionGrid_\\#=DetailSection.ID\\#") .Columns(columns => { columns.Bound(c => c.DetailSection.ID).HeaderTemplate(@<input type="checkbox" id="selectAllSection" />) .ClientTemplate("\\# if (StatusText=='Failed') { \\# <input type='checkbox' class='app_select_Section' data-refid='\\#: DetailSection.ID \\#'/> \\# } \\#") .Sortable(false).Width(20); columns.Bound(c => c.DetailSection.ID).Title("ID"); columns.Bound(c => c.DetailSection.MaterialNo).Title("Stockcode").Width(90); columns.Bound(c => c.DetailSection.UID).Title("UID").Sortable(false).ClientTemplate("\\#if (DetailSection.UID!=null&&DetailSection.UID!='') {\\#<a href='" + @Url.Content("~/Inventory/InventoryDetail") + "?SerialNo=\\#=DetailSection.UID\\#'>\\#=DetailSection.UID\\#</a>\\#}\\#"); columns.Bound(c => c.DetailSection.ManufacturePartNo).Title("Part No").Width(90); columns.Bound(c => c.StatusText).Title("Status").Width(55); columns.Bound(c => c.DetailSection.ErrMsg).Title("Error Message"); } ) .Pageable() .DataSource(source => source.Ajax() .PageSize(5) .ServerOperation(false) .Read(read => read.Action("GetPendDetailSection", "Inventory", new { detailRecordId = "#=DetailRecord.ID#" })) )public class PendDetailRecordDTO{ public string StatusText { get; set; } public string StorageLocationText { get; set; } public string DocNo { get; set; } public string FileName { get; set; } public SAP_DetailRecord_STG DetailRecord { get; set; } public PendDetailRecordDTO(SAP_DetailRecord_STG detailRecord) { DetailRecord = detailRecord; }}public class PendDetailSectionDTO{ public string StatusText { get; set; } public SAP_DetailSection_STG DetailSection { get; set; } public PendDetailSectionDTO(SAP_DetailSection_STG detailSection) { DetailSection = detailSection; }}.Name("pendDetailSectionGrid_\\#=DetailSection.ID\\#")data-refid='\\#: DetailSection.ID \\#'.ClientTemplate("\\#if (DetailSection.UID!=null&&DetailSection.UID!='') {\\#<a href='" + @Url.Content("~/Inventory/InventoryDetail") + "?SerialNo=\\#=DetailSection.UID\\#'>\\#=DetailSection.UID\\#</a>\\#}\\#")