Ich verwende jQuery-Registerkarten und eine ASP.NET-Listenansicht, um einige Informationen anzuzeigen und zu bearbeiten. Mein Problem ist, dass wenn ein Benutzer einen neuen Datensatz in eines der Listenansichtselemente einfügt, meine jQuery-Registerkarten auf die erste Registerkarte zurückkehren. Gibt es eine Möglichkeit, den Überblick über den Tab zu behalten, auf dem ich mich befinde, oder zu verhindern, dass er auf dem Post zurück liegt?Bleiben Sie auf dem aktuellen jQuery Tab über Post zurück?
Antwort
In asp.net Sie es in einem versteckten Feld speichern können, ohne einen Cookie zu verwenden (keine Notwendigkeit für die jquery Cookie-Referenz).
verwenden:
$(function() {
$("#tabs").tabs({
activate: function() {
var selectedTab = $('#tabs').tabs('option', 'active');
$("#<%= hdnSelectedTab.ClientID %>").val(selectedTab);
},
active: <%= hdnSelectedTab.Value %>
});
});
Dann im Körper, erklären Sie Ihre verborgenen Registerkarte Feld:
<asp:HiddenField ID="hdnSelectedTab" runat="server" Value="0" />
Grundsätzlich auf die Auswahl einer Registerkarte Sie den ausgewählten Registerkarten Wert in der asp sind Speichern versteckt Feld. Dann zeigen Sie den Wert an.
nur als Referenz, funktioniert in neueren Versionen von jQuery UI, das 'show' /' selected' nicht mehr. Verwenden Sie stattdessen 'activate' und' active'. –
besser, den Code zu ersetzen: aktiv: <% = hdnSelectedTab.Value%> mit aktiv:. $ ("# <% = HdnSelectedTab.ClientID%>") val(). Ansonsten haben Sie Probleme mit UpdatePanel. – ZooZ
Nach dem Ersetzen 'Option', 'ausgewählt' mit 'Option', 'aktiv' und mit aktiv:. $ ("# <% = HdnSelectedTab.ClientID%>") val(), wie @ZooZ erwähnt arbeitete das für mich in Ordnung . –
Es gibt built-in support für die jQuery cookie plugin (direct download). Sie verwenden es wie folgt:
$("#tabs").tabs({
cookie: { expires: 7 } //1 week
});
Es ist nicht das gleiche wie die Aufrechterhaltung über Postback, aber es bietet normalerweise den gewünschten Effekt.
Sie können die aktuellen Registerkarte erhalten, indem dies zu tun:
var selected = $tabs.tabs('option', 'selected');
Sie können dann auf die Registerkarte wählen (nach Abschluss des POST), indem Sie diese:
$tabs.tabs('select', selected);
Beachten Sie, dass die Registerwahl ist Indexierung auf 0-Basis. Wenn Sie also 2 auswählen, wird die dritte Registerkarte ausgewählt.
Ich bin kein .NET-Typ, aber Sie können wahrscheinlich auf das Submit() - Ereignis des Formulars zugreifen und die aktuell aktive Registerkarte mit Ihren Formulardaten an den Server senden. Auf diese Weise können Sie einfach die richtige Registerkarte auf der Serverseite auswählen, wenn Sie das DOM und JS tatsächlich generieren. wie
Etwas ...
$("#the_form").submit(function(){
var $form = $(this);
selected_tab_idx = $("#the_tabs").tabs("option", "selected");
$('<input />', {type: hidden, name: 'tab_index', value: selected_tab_idx}).appendTo($form);
return true;
});
Bei neueren Versionen von jQuery und jQuery UI, wird dies sein:
$(function() {
$("#tabs").tabs({
activate: function() {
var selectedTab = $('#tabs').tabs('option', 'active');
$("#<%= hdnSelectedTab.ClientID %>").val(selectedTab);
},
active: document.getElementById('<%= hdnSelectedTab.ClientID %>').value
});
});
Die ‚ausgewählt‘ Option ‚aktiv‘ ersetzt wird ... Ofcourse Sie müssen noch das versteckte Feld hinzuzufügen:
<asp:HiddenField ID="hdnSelectedTab" runat="server" Value="0" />
Diese Lösung für mich gearbeitet: Source http://saradesh.com/tajuddin/index.php/keep-the-selected-jquery-tab-active-on-partial-post-back-in-asp-net/
<script type="text/javascript">
var selTab;
$(function() {
var tabs = $("#tabs").tabs({
show: function() {
//get the selected tab index
selTab = $('#tabs').tabs('option', 'selected');
}
});
});
function pageLoad(sender, args) {
if (args.get_isPartialLoad()) {
$("#tabs").tabs({show: function() {
//get the selected tab index on partial postback
selTab = $('#tabs').tabs('option', 'selected');
}, selected: selTab });
}
};
</script>
Try dies:
auf die Seite hinzufügen:
<asp:HiddenField ID="hdnSelectedTab" runat="server" Value="0" />
zum Skript hinzufügen:
$(function() {
var activeIndex = parseInt($get("hdnSelectedTab").value);
$("#tabs").tabs({
active: activeIndex,
activate: function (event, ui) {
$get("hdnSelectedTab").value = ui.newTab.index();
}
});
});
Ich denke, es ist besser mit $ ("# <% = hdnSelectedTab.ClientID%>") –
- 1. Bleiben Sie auf der aktuellen Seite nach dem POST
- 2. jquery deaktivieren Post zurück auf Schaltfläche Asp.net
- 3. Wie setzt man den aktuellen Tab-Index in Flash zurück?
- 4. Jquery $ .post gibt Daten zurück
- 5. Wie Sie mit Facebook APIs auf dem Laufenden bleiben?
- 6. Öffnen Sie eine neue Registerkarte mit Javascript, aber bleiben Sie auf der aktuellen Registerkarte mit Javascript
- 7. Grails POST-Daten über Jquery AJAX
- 8. Post-Daten über jQuery AJAX
- 9. jquery Drag drop - zurück zur aktuellen
- 10. Holen Sie sich ein Jahr zurück ab dem aktuellen Datum
- 11. jquery Tab - Open Link im aktuellen Panel funktioniert nicht
- 12. Tabbedpanel - bleiben Sie auf der aktuellen Registerkarte, aber ändern Inhalt der Registerkarte
- 13. JQuery Post-Array über Ajax
- 14. Wie gehen Sie andere Tabs durch Klicken auf eine Schaltfläche aus dem aktuellen Tab in Android?
- 15. JQuery vor aktuellen
- 16. abrufen POST-Daten zurück AJAX/jQuery
- 17. jquery - Links öffnen im aktuellen Tab stattdessen die Seite verlassen
- 18. Bleiben Sie auf beweglichen Plattformen
- 19. Aktuellen Tab-Index abrufen vb.net
- 20. Senden Sie ein multidimensionales Array über $ .post mit jquery
- 21. jQuery $ .post gibt keine JSON-Daten zurück
- 22. jQuery Post gibt Seitenquelle zurück (Laravel)
- 23. jQuery senden HTML-Daten über POST
- 24. Aktuellen aktiven Tab durch JS abrufen.
- 25. Wie Felder nach dem Post zurück in asp.net mvc löschen?
- 26. Refresh PartialView über jQuery nach Ajax Post
- 27. Tab-Leiste auf dem iPhone, aber nicht auf dem iPad
- 28. jQuery Menü sollte bleiben opem
- 29. kann nicht Parameter übergeben über jQuery POST
- 30. wie Tab-Reihenfolge in jquery
wie kann ich implementieren diese zu meinen Code bitte .. https: // Stackoverflow.com/q/48215218/4233410 –