0

我有简单的实体;

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..

4

1 回答 1

0

将 Gridview 的 Auto“AutoGenerateColumns”属性设置为 true。然后为数据源分配列名。

并且当您使用 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();
}

现在,由于您只想更改列名,因此您可以这样做(设置标题属性),

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 = "客户名称"; grid.Columns[1].Caption = "客户 ID";

于 2014-05-30T14:10:34.980 回答