我设计了我的jqgrid viewmodel,如下所示,
public class DomainJQGrid
{
public JQGrid DomainsGrid { get; set; }
public DomainJQGrid()
{
DomainsGrid = new JQGrid
{
Columns = new List<JQGridColumn>()
{
new JQGridColumn
{
DataField = "DomainId",
PrimaryKey = true,
Editable = false,
HeaderText = "Domain ID",
Visible = false
},
new JQGridColumn
{
DataField = "ClientId",
Editable = false,
Width = 150,
HeaderText = "Client"
},
new JQGridColumn
{
DataField = "DomainName",
Editable = false,
Width = 150,
HeaderText = "Domain Name"
},
new JQGridColumn
{
DataField = "Registered",
Editable = true,
Width = 100,
DataFormatString = "{0:d}",
HeaderText = "Registered",
}
},
AutoWidth = true,
};
DomainsGrid.ToolBarSettings.ShowRefreshButton = true;
}
}
我将数据源绑定到使用我的控制器,如下所示。
return gridModel.DomainsGrid.DataBind(hmEntity.DomainProducts);
在上面的模型中,我如何从我的客户端表中引入 ClientName ,而不是我的 ClientId ?
答案 0 :(得分:2)
如果我理解正确,您希望能够定义使用对象属性的属性的列。
假设您有一个名为Client的Client类型的属性,您希望能够执行以下操作:
DataField = "Client.ClientName"
不幸的是,这似乎不起作用。可能有不同的符号可用于此,但在遇到此场景时我找不到任何文档。
为了解决这个问题,并且以弄脏模型为代价,我选择添加一个属性来支持网格。这是在我的“技术债务”清单上,我希望在我支付回报时找到更好的解决方案。
如果您想承受同样的负担:),请将此添加到您的DomainProduct类中(再次假设您有一个Client属性):
[NotMapped]
public string ClientName
{
get { return Client == null ? "" : Client.ClientName; }
}
然后只使用ClientName作为DataField值。