【问题标题】: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 标记。

标签: c# mysql asp.net gridview datagridview


【解决方案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;

谢谢大家的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2016-05-17
    • 2011-08-30
    • 2018-12-02
    • 2018-05-07
    相关资源
    最近更新 更多