在嵌套的GridView(父GridView的模板列內的GridView)中。我將子GridView綁定到父GridView的RowDataBound事件中的DataTable。這是應該的。但我面臨的問題是在Child GridView的RowDataBound事件中,當我嘗試訪問e.Row.DataItem屬性時,它返回null。我期待它返回DataRowView類型。我將用它來設置TextBox的值。ASP.NET嵌套的GridView中,DataItem在子GridView的RowDataBound事件中返回null
父GridViewId = gvProductOptionGrps和 兒童GridViewId = gvProductOptions
父GridView的RowDataBound事件。
protected void gvProductOptionGrps_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//ProductOptionGrps
TextBox txtProductOptionGrpSortOrder = (TextBox)e.Row.FindControl("txtProductOptionGrpSortOrder");
Label lblProductOptionGrpName = (Label)e.Row.FindControl("lblProductOptionGrpName");
DataRowView drv = (DataRowView)e.Row.DataItem;
txtProductOptionGrpSortOrder.Text = drv["SortOrder"].ToString();
lblProductOptionGrpName.Text = drv["Name"].ToString();
//ProductOptions
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.CommandText = "SELECT a.ProductOptionId,a.SortOrder,b.Name,b.PriceGBP" +
" FROM ProductOptionGrpProductOptions a" +
" INNER JOIN ProductOptions b ON a.ProductOptionId=b.ProductOptionId" +
" WHERE [email protected]" +
" ORDER BY a.SortOrder";
sqlCmd.CommandType = CommandType.Text;
sqlCmd.Parameters.Add("@ProductOptionGrpId", SqlDbType.UniqueIdentifier).Value = new Guid(drv["ProductOptionGrpId"].ToString());
_fl.ConnectToSQLServer();
sqlCmd.Connection = _fl.GetActiveSQLServerConnection();
DataTable dtProductOptions = new DataTable();
dtProductOptions.Load(sqlCmd.ExecuteReader());
GridView gv = (GridView)e.Row.FindControl("gvProductOptions");
gv.DataSource = dtProductOptions;
gv.DataBind();
_fl.DisconnectFromSQLServer();
}
}
protected void gvProductOptions_RowDataBound(object sender, GridViewRowEventArgs e)
{
TextBox txtProductOptionSortOrder = (TextBox)e.Row.FindControl("txtProductOptionSortOrder");
TextBox txtPriceGBP = (TextBox)e.Row.FindControl("txtPriceGBP");
DataRowView drv = (DataRowView)e.Row.DataItem;//returns null
txtProductOptionSortOrder.Text = drv["SortOrder"].ToString();//Error
txtPriceGBP.Text = drv["PriceGBP"].ToString();//Error
}
您應該編輯了原始問題而不是創建新問題。如果你編輯過它,它會被推高。 http://stackoverflow.com/questions/4626621/dataitem-is-null-in-nested-gridviews-rowdatabound-event – 2011-01-08 15:09:01