我是backgrid的新手,并在表单中使用它以允许用户选择一行(通过复选框),然后单击"提交"。我无法弄清楚如何配置我的网格表现得像"单选按钮"因为只能选择一行。这是backgrid原生支持的东西,还是我需要写一个处理程序来取消选择"以前选择的行?
答案 0 :(得分: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对象。
答案 1 :(得分: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>