У меня есть проект 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
, ссылка на ячейку на самом деле не содержит кнопку, а скорее прикреплена к столбцу. Итак, как мне получить эту кнопку, чтобы отключить ее? Или есть лучший способ сделать это?