Отключение кнопок столбцов команд в Ext.JS - PullRequest
0 голосов
/ 31 октября 2018

У меня есть проект Ext.NET/Ext.JS MVC со следующим видом сетки в моем файле .cshtml:

@(x.Viewport()
    .ID("MyViewport")
    .Items(x.GridPanel()
        .ID("MyListGrid")
        .View(x.GridView()
            .GetRowClass(a =>
            {
                a.Args = new[] { "record" };
                a.Fn = "MyJs.renderInactiveRow";
            })
            .ID("MyGrid")
            .Store(x.Store()
                .AutoLoad(true)
                .Proxy(x.AjaxProxy()
                    .Url(Url.Action("GetList", "Home"))
                    .Reader(x.JsonReader().RootProperty("data")))
                .Model(x.Model()
                    .Fields(
                        x.ModelField()
                            .Name("Name")
                            .Type(ModelFieldType.String),
                        x.ModelField()
                            .Name("Id")
                            .Type(ModelFieldType.Int),
                        x.ModelField()
                            .Name("IsActive")
                            .Type(ModelFieldType.Boolean))))
            .ColumnModel(
                x.Column()
                    .DataIndex("Name")
                x.CommandColumn()
                    .DisabledCls("non-viewable")
                    .Commands(
                        x.GridCommand()
                            .CommandName("Run")
                            .IconCls("far fa-play-circle")
                            .Cls("btn-action")
                            .Text(Model.RunButtonText))))))

Мой файл JavaScript имеет следующий код:

renderInactiveRow: function(record) {
    return record.data.IsActive ? null : "inactive non-viewable";
}

Класс inactive соответствует файлу .css, который изменит цвет фона строки сетки. Пока что эта часть работает. Теперь я пытаюсь заставить эту функцию также отключить кнопку в столбце команд, и я не могу этого добиться. Я попытался добавить рендер в столбец:

renderRunBtn: function(value, metadata, record) {
    if (!record.data.IsActive) {
        metadata.tdCls = "non-viewable";
    }

    return value;
}

но это тоже не помогло. Кажется, что metadata, ссылка на ячейку на самом деле не содержит кнопку, а скорее прикреплена к столбцу. Итак, как мне получить эту кнопку, чтобы отключить ее? Или есть лучший способ сделать это?

...