添加的列仅适用于 GridView 中的第一行

Column added only works for first row in GridView

我正在为我的 GridView 动态显示我的列,我想根据其他两列的值添加另一列。所以新列是作业数减去 POD 数。我能够创建新列,但它只显示 GridView 中第一行的结果,所有其他行都是空白的。也可以更改此列的位置吗?它默认为最后一列,但我希望它是 GridView 中的第 4 列。

main.Columns.Add("NotPOD", typeof(int));
              int index = 0;
              foreach (DataRow row in main.Rows)
              {
                  main.Rows[index]["NotPOD"] = Convert.ToInt32(main.Rows[index]["Jobs"]) - Convert.ToInt32(main.Rows[index]["POD"]);
              } 

            gvResults.DataSource = main;
            gvResults.DataBind();

您的代码有错误。当你使用 foreach 时,你不需要使用索引。你也没有增加 index

      foreach (DataRow row in main.Rows)
      {
          row["NotPOD"] = Convert.ToInt32(row["Jobs"]) - Convert.ToInt32(row["POD"]);
      } 

我猜想解决这个问题将您的索引更新为

main.Columns.Add("NotPOD", typeof(int));
          int index = 0;
          foreach (DataRow row in main.Rows)
          {
              main.Rows[index]["NotPOD"] = Convert.ToInt32(main.Rows[index]["Jobs"]) - Convert.ToInt32(main.Rows[index]["POD"]);
              index++;
          } 

        gvResults.DataSource = main;
        gvResults.DataBind();

希望对你有所帮助

使用foreach

main.Columns.Add("NotPOD", typeof(int));    
foreach (DataRow row in main.Rows)
{
   row["NotPOD"] = Convert.ToInt32(row["Jobs"]) - Convert.ToInt32(row["POD"]);
} 
gvResults.DataSource = main;
gvResults.DataBind();

使用for

main.Columns.Add("NotPOD", typeof(int));    
for(int index = 0;index < main.Rows.Count; index++)
{
   main.Rows[index]["NotPOD"] = Convert.ToInt32(main.Rows[index]["Jobs"]) - Convert.ToInt32(main.Rows[index]["POD"]);
} 
gvResults.DataSource = main;
gvResults.DataBind();