我有一个父级和子级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;
}
但是,无论如何使用列名获得相同的值?
答案 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();
}
}