gpt4 book ai didi

ASP.NET嵌套GridView,子GridView的RowDataBound事件中DataItem返回null

转载 作者:行者123 更新时间:2023-12-04 06:37:59 25 4
gpt4 key购买 nike

在嵌套的 GridView 中(父 GridView 的模板列内的 GridView)。我将子 GridView 绑定(bind)到父 GridView 的 RowDataBound 事件中的 DataTable。这可以正常工作。但我面临的问题是在 Child GridView 的 RowDataBound 事件中,当我尝试访问 e.Row.DataItem 属性时,它返回 null。我期待它返回 DataRowView 类型。然后我将使用它来设置 TextBox 的值。

父 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 a.ProductOptionGrpId=@ProductOptionGrpId" +
" 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
}

最佳答案

您忘记检查 Row 是否为 gvProductOptions_RowDataBound 中的 DataRow . Header 没有 DataItem,因此它为空。

if (e.Row.RowType == DataControlRowType.DataRow)

关于ASP.NET嵌套GridView,子GridView的RowDataBound事件中DataItem返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4633261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com