在GridControl中显示名称

时间:2014-05-30 10:57:58

标签: c# .net entity-framework devexpress-windows-ui

我有简单的实体;

public class Customer
{
[Key]
public int ID { get; set; }

public String Name { get; set; }
}

public class Provider
{
[Key]
public int ID { get; set; }

public String Name { get; set; }
}

我正在使用

 Devexpress LinqServerModeSource
 Devexpress Grid

我在运行时设置了数据源。

网格列标题为“ID”“名称”, 但如果我设置数据源客户,我想看“客户ID”“客户名称”,或者如果我设置数据源提供商,我想看到“提供商ID” “提供商名称”

所以有什么办法吗?注释或vs ..

1 个答案:

答案 0 :(得分:0)

为您设置Gridview的Auto" AutoGenerateColumns"财产真实。然后使用列名称分配数据源。

当您使用Devexpress时,您必须在Page Init中设置数据源。 这不是完美/完整的代码,但你可以从这个代码块中获得想法。

protected void Page_InIt(object sender, EventArgs e)
{
    BindGrid("Customers");
}

private void BindGrid(string strDataSourceType)
{
    var customers, providers = null;

    if (strDataSourceType == "Customers")
    {
        customers = (from x in Context.Customers
                     select new
                     {
                         CustomerId = x.ID,
                         CustomerName = x.Name
                     }).ToList();
    }
    else if (strDataSourceType == "Providers")
    {
        providers = (from x in Context.Providers
                     select new
                     {
                         ProviderId = x.ID,
                         ProviderName = x.Name
                     }).ToList();
    }

    grid.DataSource = customers / providers;
    grid.AutoGenerateColumns = true;
    grid.DataBind();
}

现在,因为你只想更改列名,那么你可以这样做(Set Caption属性),

foreach (DevExpress.Web.ASPxGridView.GridViewDataColumn column in grid.Columns)
                {
                    if (column.FieldName == "Name")
                        column.Caption = "Customer Name";

                    if (column.FieldName == "ID")
                        column.Caption = "Customer ID";
                }

如果您知道列顺序,则可以在不使用foreach循环的情况下设置标题。 你可以这样做,

grid.Columns [0] .Caption ="客户名称&#34 ;; grid.Columns [1] .Caption ="客户ID&#34 ;;