【问题标题】:Link to foreign key in JQGrid链接到 JQGrid 中的外键
【发布时间】:2012-03-03 06:36:46
【问题描述】:

我的 jqgrid 视图模型设计如下,

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

【问题讨论】:

    标签: asp.net-mvc-3 entity-framework-4 jqgrid-asp.net


    【解决方案1】:

    如果我理解正确,您希望能够定义一个使用对象属性的列。

    假设您有一个 Client 类型的属性,名为 Client,您希望能够执行以下操作:

    DataField = "Client.ClientName"
    

    不幸的是,这似乎不起作用。可能有不同的符号可以用于此,但是当我遇到这种情况时找不到任何文档。

    为了解决这个问题,并且以弄脏模型为代价,我选择添加一个属性来支持网格。它在我的“技术债务”清单上,我希望在偿还时找到更好的解决方案。

    如果您想承受同样的负担 :),请将其添加到您的 DomainProduct 类中(同样,假设您有一个 Client 属性):

    [NotMapped]
    public string ClientName
    {
        get { return Client == null ? "" : Client.ClientName; }
    }
    

    然后只使用 ClientName 作为 DataField 值。

    【讨论】:

    • 感谢@Mufaka,它帮助我使用了 [NotMapped] 注释。
    猜你喜欢
    • 2023-03-06
    • 1970-01-01
    • 2012-08-08
    • 2010-12-03
    • 2018-10-19
    • 2011-03-24
    • 2021-01-03
    • 2015-05-04
    • 1970-01-01
    相关资源
    最近更新 更多