在OnRowDataBound上从父网格视图中查找BoundField值

时间:2018-01-08 21:54:11

标签: c# asp.net gridview

我有一个父级和子级gridview设置。在OnRowDataBound事件上,我需要父gridview单元格的值。这不是父Gridview的DataKeys。我已经评论了一些我尝试过的东西,但没有完全达到目的。我认为最后两行是接近的,但我不确定正确的语法应该是什么。

gvCustomers是parentGV。

  {
  if (e.Row.RowType == DataControlRowType.DataRow)
  {
  string requestId = gvCustomers.DataKeys[e.Row.RowIndex].Value.ToString();
  GridView gvOrders = e.Row.FindControl("gvOrders") as GridView;
  gvOrders.DataSource = GetData(string.Format("select top 10 * from Orders where RequestID='{0}'", requestId));
  gvOrders.DataBind(); // this is the childGV

  string cell_1_Value = gvCustomers.Rows[e.Row.RowIndex].Cells[0].Text;
  string cell_2_Value = gvCustomers.Rows[e.Row.RowIndex].Cells[1].Text;
  }
  }

现在正在使用:

    foreach (GridViewRow gr in gvCustomers.Rows)
    {
        string requestStatus = gvCustomers.Rows[gr.RowIndex].Cells[3].Text;
    }

但是,无论如何使用列名获得相同的值?

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

if (e.Row.RowType == DataControlRowType.DataRow)
      {
      string requestId = gvCustomers.DataKeys[e.Row.RowIndex].Value.ToString();
      GridView gvOrders = e.Row.FindControl("gvOrders") as GridView;
      gvOrders.DataSource = GetData(string.Format("select top 10 * from Orders where RequestID='{0}'", requestId));
      gvOrders.DataBind(); // this is the childGV

      System.Data.DataRowView dr = (System.Data.DataRowView)e.Row.DataItem;
      string requestStatus = dr["myColumnHeader"].ToString();
  }
  }