Ich bin neu zu backgrid und benutze es in einem Formular, um dem Benutzer zu ermöglichen, eine Zeile (über ein Kontrollkästchen) auszuwählen und dann auf "Senden" zu klicken. Ich kann nicht herausfinden, wie ich mein Grid so konfigurieren soll, dass es sich wie "Radio Buttons" verhält, da nur eine Zeile ausgewählt werden kann. Ist dies etwas, das Backgrid nativ unterstützt, oder muss ich einen Handler schreiben, um zuvor ausgewählte Zeilen "abzuwählen"?backgrid.js - Wie verhindert man die Auswahl mehrerer Zeilen?
0
A
Antwort
0
Hier ist eine schnelle-n-dirty-Methode:
wellCollection.on('backgrid:selected', function(model, selected) {
if (wellGrid.getSelectedModels().length > 1) {
model.trigger("backgrid:select", model, false);
alert('Only one selection is allowed.');
}
});
Der Nachteil ist dieser Ansatz die Verwendung von „SelectAll“ erfordert, die den Benutzer wirklich kontraintuitiv ist. Ich würde es vorziehen, nicht "SelectAll" verwenden zu können, aber es ist erforderlich, das getSelectedModels-Objekt zu füllen.
0
Sie könnten eine benutzerdefinierte Zelle erstellen, die Optionsfelder rendert. Die Umsetzung unten kann etwas mehr arbeiten müssen, aber so etwas wie dies wird Ihnen den Einstieg:
var RadioCell = Backgrid.Cell.extend({
events: {
"click .selectedRadio": "makeSelected"
},
render: function() {
this.template = Mustache.to_html($("#radioCell").html(), this.model.toJSON());
this.$el.html(this.template);
this.delegateEvents();
return this;
},
makeSelected: function() {
// set all to inactive
this.model.collection.invoke('set', { "SomeModelAttrib": false });
// check if radio is checked and set the value on the model
var radioValue = $("input[name='someSelection']").is(":checked");
this.model.set("SomeModelAttrib", radioValue);
}
});
und der Schnurrbart Vorlage:
<script type="text/template" id="radioCell">
<input type='radio' class='selectedRadio' name='someSelection' value="{{SomeModelAttrib}}" {{#SomeModelAttrib}}checked{{/SomeModelAttrib}}>
</script>
Verwandte Themen
- 1. Wie verhindert man die Auswahl von Text bei Doppelklick?
- 2. Pandas: Auswahl mehrerer Spalten programmatisch
- 3. Wie ändert man die Höhe mehrerer Zeilen gleichzeitig?
- 4. Wie verhindert man SQL-Fehler bei Mehrfach-Join-Zeilen und Werte für mehrere Zeilen?
- 5. Wie verhindert man das Senden mehrerer Formulare in Yii2?
- 6. Vollkalender verhindert die Auswahl am nächsten Tag
- 7. Navigationsansicht Auswahl mehrerer Objekte
- 8. Sublime Text 3: Wie funktioniert die Auswahl mehrerer Zeilen, die Leerzeilen ausschließt?
- 9. Löschen mehrerer Auswahl in ListBox
- 10. php Auswahl mehrerer Zeilen aus Array von IDs
- 11. SQL-Auswahl mehrerer Tabellen
- 12. Deaktivieren der Auswahl mehrerer Zeilen in der Tabellenansicht in Swift
- 13. Regex Auswahl mehrerer Felder
- 14. Auswahl mehrerer Punkte
- 15. Einrücken mehrerer Zeilen: Tastaturkürzel
- 16. Wie verhindert man, dass f: selectItems leere Zeilen anzeigt?
- 17. Wie verhindert man, dass UITextField mehrere Zeilen anzeigt?
- 18. Wie man die Auswahl wiederherstellt?
- 19. Wie verhindert man ListBox.SelectedIndexChanged Ereignis?
- 20. Wie man Indexfeld verhindert?
- 21. Wie verhindert man die Änderung der Funktion?
- 22. Wie verhindert man die zirkuläre Bindungsabhängigkeit?
- 23. Wie verhindert man, dass die Tischhöhe überläuft?
- 24. Wie Festlegen mehrerer Auswahl in ASP.NET ListBox?
- 25. Auswahl mehrerer Verbindungen im Winkelmesser
- 26. Beste mysql-Abfrage für die Auswahl mehrerer Zeilen, die mehrere assoziative Zeilen aus einer anderen Tabelle benötigen
- 27. Gesamtsumme mehrerer MySQL-Zeilen
- 28. Abfrage für die Übereinstimmung mehrerer Zeilen?
- 29. verhindert die Auswahl von Menustrip durch Drücken von alt
- 30. Auswahl mehrerer Kategorien aus der Datenbank
Ich kann sehen, wie ein Ereignishandler einzurichten, eine Zeile zu fangen sein ausgewählt 'wellCollection.on ('backgrid: selected', Funktion (Modell, ausgewählt) { Warnung ('Eine Backgrid-Zeile wurde ausgewählt!' + model.attributes.api + ':' + ausgewählt); });' which funktioniert gut. Ich würde jedoch gerne alle Zeilen durchlaufen und wenn irgendwelche anderen Zeilen "ausgewählt" sind, eine zusätzliche Auswahl verhindern. Mein JavaScript ist noch nicht ausgereift genug, um die Backgrid-Quelle zu lesen und herauszufinden. –