我在.cshtml文件中有一个具有以下网格视图的Ext.NET/Ext.JS MVC项目:
@(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
(单元格引用实际上没有包含按钮)而是连接到了列。那么,如何获得此按钮以将其禁用?还是有更好的方法来做到这一点?