将列添加到datatable并将其绑定到网格中

时间:2015-10-21 09:44:27

标签: c# asp.net gridview datatable

我有一个属性autogeneratecolumn=true的gridview 我的DataTable使用mdx查询填充下面提到的数据。

sales2015   sales2014
1256           1235
3569            0
0              1235

我想添加另一个名为“VARIENT”的列,并且需要显示相同的百分比。

  

公式:(sales2015 - sales2014)/sales2015 * 100

需要使用相同的公式计算数据表的每一行并绑定到gridview。

请帮我解释逻辑。

  

注意:我的网格有自动生成的列

预期结果是这样的

sales2015   sales2014  Varient
1256           1235      **%
3569            0         **%
0              1235      **%  

我的代码部分是:

System.Data.DataTable dt = new System.Data.DataTable();
ViewData1 vData = new ViewData1();
dt = vData .__getCustomerSource()// Here in this function i was filling the datatable and returing

DataGrid1.DataSource = null;

DataGrid1.DataSource = dt;
DataGrid1.DataBind();

1 个答案:

答案 0 :(得分:0)

您可以动态创建第三列并按如下方式填充: -

dt = vData .__getCustomerSource()
dt.Columns.Add("Varient", typeof(string));
foreach (DataRow row in dt.Rows)
 {
    row["Varient"] = String.Format("{0} %", ((row.Field<int>("sales2015") - 
                        row.Field<int>("sales2014")) / row.Field<int>("sales2015")) * 100);
 }
DataGrid1.DataSource = dt;
DataGrid1.DataBind();

您需要相应地更改公式。

<强>更新

如果您的列名称将会发生变化,那么您可以使用列索引(但如果您的数据表结构动态更改,则可能会失败),如下所示: -

(int)row.[1] - (int)row[2]