如何使用objectdatasource替换gridview中描述列的强类型ID列

时间:2012-01-26 07:20:53

标签: asp.net gridview objectdatasource

我已经从SaleDAL类填充了gridview,假设以下是代码,请忽略任何语法错误



    public class Product
    {
      public int ProductID
      { }
      public string ProductName
      { }
    }

    public class Sale
    {
      public int SaleID
      { }
      public int ProductID
      { }
      public int Amount
      { }
    }
    // Data Access Layers
    public class ProductsDAL
    {
       public IList<Product> GetProducts()
       { }
    }
    public class SaleDAL
    {
      public IList<Sale> GetSales()
      { }
      public void AddSale()
      {}
    }
    // populate gridview, 
    // ObjectDataSource1 is configured with SaleDAL
    GridView1.DataSourceID = "ObjectDataSource1";

第二列是ProductID,我想用ProductName替换它,最简单的方法是什么,我不想写另一个类,请注意以后的编辑操作也将在它上面执行。

2 个答案:

答案 0 :(得分:0)

如果您的列表包含ProductName,则需要配置GridView(关闭自动生成的列)。添加新的boundfield / templatefield并分配具有ProductName值的datafield属性。

答案 1 :(得分:0)

最后我找到了解决方案,

     List<Sale> sales = new List<Sale>();
     Sale sale = new Sale();
     List<Product> products = new List<Product>();
     products = (List<Product>) ProductDAL.GetProducts();

     //r is SqlDataReader.

     _sale.SaleID = Convert.ToInt32(r["SaleID"]);
     _sale.ProductID = Convert.ToInt32(r["ProductID"]);
     _sale.ProductInRelation = products.Find(
                                                 delegate(Product p){
                                                 return p.PoroductID == _sale.ProductID;
                                             });
     _sales.Add(_sale);

     //now in gridview you can write 

     <%# Eval("ProductInRelation.ProductName") %>