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

本文关键字:一行 适用于 GridView 添加 | 更新日期: 2023-09-27 18:02:43

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

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();

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

使用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();

您的代码有错误。当您使用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();

希望对你有帮助