Я новичок в backgrid и использую его в форме, чтобы пользователь мог выбрать строку (с помощью флажка), а затем нажать «Отправить». Я не могу понять, как настроить мою сетку, чтобы вести себя как «радиокнопки» в том, что можно выбрать только одну строку. Является ли это что-то backgrid изначально поддерживает или мне нужно написать обработчик, чтобы «отменить выбор» ранее выбранных строк?backgrid.js - как предотвратить многострочный выбор?
0
A
ответ
0
Вот быстро-н-грязный метод:
wellCollection.on('backgrid:selected', function(model, selected) {
if (wellGrid.getSelectedModels().length > 1) {
model.trigger("backgrid:select", model, false);
alert('Only one selection is allowed.');
}
});
Недостатком является то, такой подход требует использования «SelectAll», который является действительно нелогичным для пользователя. Я бы предпочел, чтобы не использовать «SelectAll», но требуется, чтобы объект getSelectedModels был заполнен.
0
Вы можете создать пользовательскую ячейку, которая отображает радиокнопки. Реализация ниже, возможно, потребуется немного больше работы, но что-то вроде этого будет вы начали:
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);
}
});
и шаблон усов:
<script type="text/template" id="radioCell">
<input type='radio' class='selectedRadio' name='someSelection' value="{{SomeModelAttrib}}" {{#SomeModelAttrib}}checked{{/SomeModelAttrib}}>
</script>
Я могу видеть, как настроить обработчик событий, чтобы поймать ряд быть выбрано 'wellCollection.on ('backgrid: selected', function (model, selected) { alert (выбрана строка Backgrid!) + model.attributes.api + ':' + selected); }); работает хорошо. Тем не менее, я хотел бы перебрать все строки и, если любые другие строки «выбраны», предотвратит дополнительный выбор. Мой JavaScript недостаточно зрел, чтобы прочитать источник Backgrid и понять это. –