在网格视图和数据上添加额外的列
Posted
技术标签:
【中文标题】在网格视图和数据上添加额外的列【英文标题】:Adding an extra column onto a gridview and data 【发布时间】:2016-07-21 12:22:54 【问题描述】:我有一个在搜索数据库后填充的网格视图,之后我在这样的 foreach 循环中进行了一些计算
foreach(DataRow datarow in ds.Tables[0].Rows)
resturantPostCodeData = checkpostcode(datarow["PostCode"].ToString().Trim());
foreach(DataRow dr in resturantPostCodeData.Tables["geo"].Rows)
rLatitude = Convert.ToDouble(dr["lat"].ToString().Trim());
rLongitude = Convert.ToDouble(dr["lng"].ToString().Trim());
distanceResult = distance(myLatitude, myLongitude, rLatitude, rLongitude);
foreach 循环底部的值distanceResult
我希望将这些结果添加到自己列中的gridview 的末尾
关于如何做到这一点的任何想法?
我正在c#
和asp.net
中制作一个网络应用程序
希望你能理解我的问题
【问题讨论】:
请添加您的 gridview 标记。 【参考方案1】:您可以在绑定 GridView 之前将该列添加到 DataTable:
DataTable dt = ds.Tables[0];
dt.Columns.Add(new DataColumn("DistanceResult", System.Type.GetType("System.Double")));
foreach (DataRow row in dt.Rows)
...
row["DistanceResult"] = distance(...);
gvDistance.DataSource = dt.DefaultView;
gvDistance.DataBind();
然后将 BoundField 添加到 GridView:
<asp:GridView ID="gvDistance" runat="server" ...>
<Columns>
...
<asp:BoundField DataField="DistanceResult" ... />
</Columns>
</asp:GridView>
【讨论】:
对 ConnonrsFan 回复的补充,您可以在 RowDataBound 上手动绑定该列,但这会更难维护,我建议使用此解决方案,但我不确定您是否需要在之后添加dt.AcceptChanges();
行更新数据。
@thepanch - 我经常用这种方式添加字段,而且我从来不用打电话给dt.AcceptChanges
。【参考方案2】:
我最终使用了类似于 ConnorsFan 给出的答案的这两行代码
ds.Tables[0].Columns.Add("Distance in miles", typeof(double));
稍后在代码中分配我使用的值时
datarow["Distance in miles"] = distanceResult;
谢谢大家的帮助
【讨论】:
以上是关于在网格视图和数据上添加额外的列的主要内容,如果未能解决你的问题,请参考以下文章