Cześć. Mam taki problem. Mam okno dialogowe gdzie strzałkami możemy z listy ustawiać kolejność artysty. To wygląda mniej więcej tak:
https://zapodaj.net/27a67fec2cfdb.jpg.html
Występuję tutaj taki problem że czasami te zaznaczenie czerowne przeskakuje na inny element samoistnie. A powinnie tylko wtedy gdy na niego klikniemy. Przeskakuje wtedy gdy zmieniam pozycję strzałkami i te przeskakiwanie rzadko występuje ale jednak :(
Wiecie jak można to naprawić ?

                                @(Html.Kendo().ListView<ProductArtists>()
                                .Name("ArtistsListView")
                                .TagName("div")
                                .ClientTemplateId("NewArtistsTemplate")
                                .DataSource(db => db
                                    .Events(e =>
                                    {
                                        e.Error("artistListViewError");
                                        e.Sync("artistListViewSyncData");
                                    })
                                    .Model(model => model.Id(x => x.Id))
                                    .AutoSync(false)
                                    .Read(x => x.Action("ProductArtistsCollection", "Product", new { modelId = Model.Id, productType = Model.ProductType, discIndex = Model.DiscIndex, trackIndex = Model.Index })
                                    .Data("checkParent"))
                                    .Create("SaveArtistsToJson", "Product", new { modelId = Model.Id, productType = Model.ProductType, discIndex = Model.DiscIndex, trackIndex = Model.Index, providerId = Model.ProviderId })
                                    .Update("UpdateArtistsToJson", "Product", new { modelId = Model.Id, productType = Model.ProductType, discIndex = Model.DiscIndex, trackIndex = Model.Index })
                                    .Destroy("DeleteArtistsToJson", "Product", new { modelId = Model.Id, productType = Model.ProductType, discIndex = Model.DiscIndex, trackIndex = Model.Index })
                                )
                                .Selectable(selectable => selectable.Mode(ListViewSelectionMode.Single))
                                .Editable()
                                .Events(e =>
                                {
                                    e.DataBound("ArtistsListOnDataBound");
                                    e.Edit("editArtistList");
                                    e.Save("saveArtist");
                                    e.Cancel("enableEditButtonsForAddArtistList");
                                    e.Change("enableArtistMovingButtons");
                                })
                                )

A tutaj jest mechanizm tych buttonów strzałek:

function moveSelectedArtist(productId, productType, discIndex, trackIndex, dstIdx) {
    $('#AddArtistModal .move-artist-up-button').attr("disabled", true);
    $('#AddArtistModal .move-artist-down-button').attr("disabled", true);

    var listView = $("#ArtistsListView").data("kendoListView");
    var dataSource = listView.dataSource;
    var oldListData = dataSource.data().map(function(item) {
        return item;
    });

    var srcUid = listView.select().data("uid");
    var srcItem = dataSource.getByUid(srcUid);
    
    var newListData = dataSource.data().filter(function(item) {
        return item != srcItem;
    });
    
    newListData.splice(dstIdx, 0, srcItem);    
    
    var isArtistOrderCorrect = checkIsArtistOrderCorrect(oldListData, newListData);

    if(isArtistOrderCorrect) {
        dataSource.remove(srcItem);
        dataSource.insert(dstIdx, srcItem);
        $('#ArtistsListView').closest('.listViewContent').data("selected-artist-index", dstIdx);
        $("#ArtistsListView").data("kendoListView").select($("#ArtistsListView").data("kendoListView").element.children()[dstIdx]);
    }

    var listData = {
        productId: productId,
        productType: productType,
        discIndex: discIndex,
        trackIndex: trackIndex,
        productArtists: JSON.stringify(dataSource.data())
    };

    saveArtistsInOrder(listData);
}

function moveSelectedArtistUp(productId, productType, discIndex, trackIndex) {
        var dstIdx = $("#ArtistsListView").data("kendoListView").select().index() - 1;

        if (dstIdx >= 0) {
            moveSelectedArtist(productId, productType, discIndex, trackIndex, dstIdx);
        }
}

function moveSelectedArtistDown(productId, productType, discIndex, trackIndex) {
        var listView = $("#ArtistsListView").data("kendoListView");
        var dataSource = listView.dataSource;
        var dstIdx = listView.select().index() + 1;

        if (dstIdx < dataSource.total()) {
            moveSelectedArtist(productId, productType, discIndex, trackIndex, dstIdx);
        }
}