Kaydedicinin widget'ını kullanarak tablo düzenleyiciyi kullanmaya çalışıyorum. Tablo knokout tarafından doldurulur.jQuery tablesorter ile elden çıkarma - satır ekleme
Tablo ilk kez doldurulduğunda, doğru miktarda satır alıyorum ve sıralamayı hatırlıyor. Daha sonra tabloyu ajax kullanarak ve nakavt dizisine bağlanan verilerle yeniden doldururum. Veriler daha sonra iki katına çıkar, ancak nakavt (doğru), sadece verilerin yarısını izler.
Şimdiye kadar ben uyguladığınızda bu yöntemde sıralama kaydedilmiş aşağı Buna izlediğimizi:
self.tablesorter = function() {
$('table.tablesorterTranslation').trigger("update");
setTimeout(function() {
var sl = $.tablesorter.storage($('table.tablesorterTranslation'), 'tablesorter-savesort');
var sortList = (sl && sl.hasOwnProperty('sortList') && $.isArray(sl.sortList)) ? sl.sortList : '';
if (sortList && sortList.length > 0) {
// update sort change
$('table.tablesorterTranslation').trigger("sorton", [sortList]);
}
}, 1000);
return false;
};
Bu yöntem bağlayıcı postaction knock-out tarafından çağrılır.
Metodu çağırmadan önce, nakavt dizisindeki her öğe için bir postanız var, postaction'dan sonra iki, biri nakavt tarafından izleniyor ve bir tane de tablo üreticisi tarafından eklenmiş görünüyor.
Bu, tablolayıcı önbelleğe alma değerleri nedeniyle mi ve bunu temizlemenin bir yolu var mı?
html:
<table class="tablesorterTranslation" data-bind="visible: contents().length > 0">
<colgroup>
<col class="referencenumber"/>
<col class="title"/>
</colgroup>
<thead>
<tr>
<th class="referencenumber">Ref number</th>
<th class="title">Title</th>
</tr>
</thead>
<tbody data-bind="foreach: contents, postAction: tablesorter(), visible: contents().length > 0">
<tr>
<td class="referencenumber">
<span data-bind="text: contentReferenceNumber"></span>
</td>
<td class="title">
<a data-bind="attr: {href: previewUrl, title: previewTitle}, click: previewpopup" class="preview_translation"><%: AdminResources.Menu_Preview %></a>
</td>
</tr>
</tbody>
</table>
tablo yeniden doldurur ajax:
self.setContentList = function() {
if ($('#LanguageIdNameValuePairs option').length > 0) {
self.contents.removeAll();
self.loading(true);
$.ajax('<%= Url.Action("GetContentList", "TranslateContentMenu") %>',
{
dataType: 'json',
data: {
languageId: $('#LanguageIdNameValuePairs').val(),
page: self.page
},
success: function (allData) {
var mappedContent = $.map(allData, function (item) { return new ContentViewModel(item); });
self.loading(false);
self.contents(mappedContent);
}
});
} else {
self.contents(new Array());
}
};
contentviewmodel:
(function (ko) {
PODIUM.translation.ContentViewModel = function(data) {
this.contentReferenceId = ko.observable(data.contentReferenceId);
this.contentName = data.contentName;
this.previewUrl = ko.observable(data.previewUrl);
this.previewTitle = ko.observable(data.previewTitle);
this.publishTitle = ko.observable(data.publishTitle);
this.contentReferenceNumber = ko.observable(data.contentReferenceNumber);
};
}(ko));
ve son olarak, savesort tablosu, doldurma ve tablesort tanımlayan (savesort bence sorun).
$('#OptionsMenu').change(function() {
viewModel.setContentList();
});
$('table.tablesorterTranslation').tablesorter({
widgets: ["saveSort"],
widgetOptions: {}
});
Bu değiştirdiğinde bazı değerlerle, i sunucudan yeni değerler elde ve masa yeniden oluşturulacaktır, seçkin bir liste var. Burası eski değerleri hatırlıyor, ama masayı “temizlemek” ve baştan başlamak istiyorum.
Paylaşabileceğin bir yerde canlı bir demo var mı? – Mottie
Unfortunatelly hayır, onun bir kamu sistemi değil, biraz daha kod sağlayabilir miyim göreceğim. – ruffen