【问题标题】:How to set a gridView column's text depending on other columns which are binded?如何根据绑定的其他列设置 gridView 列的文本?
【发布时间】:2012-05-14 17:37:23
【问题描述】:

我在 ASP 中有一个 GridView,用于在购物车中显示产品。

我在 ShopDataSet 中设置了 GridView 的来源,并自动填充了 Name、Price 和 Quantity 列。

我想要实现的是我添加的一个新列,它显示每一行的成本,即Cost = price * quantity;

如何在不对数据库执行新查询的情况下以编程方式执行此操作?

我不得不说,在价格和数量上,我设置了像 "${0}" 用于价格和"{0} piece(s)" 用于数量的格式。

【问题讨论】:

  • ASP.NET != ASP 经典。彼此无关。我删除了标签。

标签: asp.net gridview


【解决方案1】:

您应该以编程方式填充您的数据源。

在 SqlDataReader 中获取结果并使用 SqlDataReader 的结果填充 DataTable。

现在创建一个新的 DataTable,其列与您想要的输出相匹配,包括您的案例中的成本。现在遍历第一个 DataTable 的每一行,并使用成本计算将行添加到新 DataTable。

例如,

DataTable oldTable = new DataTable();
oldTable .Load(rdr); // where rdr is your SqlDataReader

现在创建你的新表

DataTable newTable = new DataTable();
DataColumn noteID = new DataColumn("Cost", typeof(string));
newTable.Columns.Add(noteID);
//Add other columns
foreach (DataRow row in oldTable .Rows)
{
   DataRow newRow = newTable.NewRow();
   newRow["Cost"] = //your calculation
   ...
   ...
   newTable.Add(newRow);
}

现在将网格的 DataSource 设置为 NewTable

【讨论】:

  • 这意味着比让设计师管理人口更多的工作,但它可以满足我的需求。谢谢
  • 是的,它需要更多的工作,但节省了前往数据库的行程。您能否通过单击对勾标记并通过单击问题附近的向上箭头将其标记为“答案”?
  • 标记为答案。我太“菜鸟”了,无法投票(需要 15 声望)。对不起
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-07
  • 2020-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多