ネストされたGridView(親GridViewのテンプレート列内のGridView)。子GridViewを親GridViewのRowDataBoundイベントのDataTableにバインドしています。これは必要に応じて動作します。しかし、私が直面している問題は、子GridViewのRowDataBoundイベントで、e.Row.DataItemプロパティにアクセスしようとするとnullが返されます。私はそれがDataRowView型を返すことを期待しています。 TextBoxの値を設定するために使用します。ASP.NETネストされたGridViewの場合、DataItemは子GridViewのRowDataBoundイベントでnullを返します。
親GridViewId = gvProductOptionGrpsと 子供GridViewId = gvProductOptions
親GridViews 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 –