首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >backgrid.js -如何防止多行选择?

backgrid.js -如何防止多行选择?
EN

Stack Overflow用户
提问于 2016-10-13 06:37:34
回答 2查看 320关注 0票数 0

我是backgrid的新手,并在表单中使用它来允许用户选择一行(通过复选框),然后单击“提交”。我不知道如何配置我的网格,使其行为像“单选按钮”,因为只能选择一行。这是backgrid原生支持的东西,还是我需要编写一个处理程序来“取消选择”以前选择的行?

EN

回答 2

Stack Overflow用户

发布于 2017-01-17 09:46:19

下面是一个快速n脏方法:

代码语言:javascript
复制
        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
EN

Stack Overflow用户

发布于 2017-08-22 02:22:04

您可以创建呈现单选按钮的自定义单元格。下面的实现可能需要做更多的工作,但下面这样的实现可以让您开始:

代码语言:javascript
复制
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);
    }
});

和小胡子模板:

代码语言:javascript
复制
<script type="text/template" id="radioCell">
<input type='radio' class='selectedRadio' name='someSelection' value="{{SomeModelAttrib}}" {{#SomeModelAttrib}}checked{{/SomeModelAttrib}}>
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40009503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档