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);
}
}