我已经从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替换它,最简单的方法是什么,我不想写另一个类,请注意以后的编辑操作也将在它上面执行。
答案 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") %>