You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#嵌套GridView中子GridView无法进入编辑模式问题求解

嵌套GridView子控件无法进入编辑模式解决方案

你现有代码的核心问题是:设置子GridView的编辑索引后仅重新绑定了主GridView,未单独绑定当前触发事件的子GridView,主GridView重绑后会重置所有子控件状态,导致编辑索引配置失效。可按以下步骤排查修复:

  • 修正事件内绑定逻辑,先给当前子GridView绑定自身数据源,不需要刷新主GridView时可注释主GridView的重绑逻辑,修改后代码如下:
protected void ChildGridView_RowEditing(object sender, GridViewEditEventArgs e)
{
    GridView g2 = (GridView)sender;
    g2.EditIndex = e.NewEditIndex;
    // 替换为你自身的子GridView数据源获取逻辑,可传入当前子GridView对应主行的主键参数筛选数据
    g2.DataSource = GetChildData(g2.NamingContainer as GridViewRow);
    g2.DataBind();
    // 无特殊需求可注释下方主GridView重绑逻辑,避免子控件状态被覆盖
    // BOGridView.DataBind();
}
  • 检查aspx页面配置,确认子GridView标签正确声明了OnRowEditing="ChildGridView_RowEditing"属性,同时配置了DataKeyNames属性存储子表主键。
  • 检查页面Page_Load逻辑,确保主GridView的首次绑定逻辑包裹在!IsPostBack判断内,避免每次回传都重绑主GridView清空子控件状态:
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BOGridView.DataSource = GetMainGridData();
        BOGridView.DataBind();
    }
}
  • 检查子GridView编辑按钮配置,自带编辑按钮直接使用CommandField即可,自定义编辑按钮需要设置CommandName="Edit",否则无法触发RowEditing事件。

如果上述步骤完成后仍未生效,可在ChildGridView_RowEditing方法内加断点确认事件是否触发:

  • 事件未触发:若子GridView是在主GridView的RowDataBound事件中动态生成的,需要在生成时手动绑定RowEditing事件。
  • 事件触发但编辑模式未生效:检查子GridView数据源是否正常返回,无空值或异常导致绑定失败。

内容的提问来源于stack exchange,提问作者Jacknife

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:00:03