【问题标题】:Binding GridView in Code-Behind Not Working在代码隐藏中绑定 GridView 不起作用
【发布时间】:2012-05-17 10:08:35
【问题描述】:

我有一个非常烦人的问题,我已经为此苦苦挣扎了几个小时。我在一个页面上有多个 asp.net GridView 控件。其中一个网格(网格 B)依赖于另一个网格(网格 a)以使其数据正确更新。

我的问题是这样的:

当我在 if(!IsPostback) 中执行 gridB.Databind() 时,网格 B 的功能可以工作,但网格不会随着网格 A 中新添加的记录而更新。

当我在不包含回发检查的其他任何地方执行 gridB.Databind() 时,网格 B 中的数据会随着网格 A 中新添加的记录正确更新,但随后网格 B 的功能不再起作用。

例子:

            // Functionality for dropdownlist etc works correctly, but new data from gvA doesn't show in gvB
            if (grvSender.ID == "gvA")
            {
                if (!IsPostBack)
                    gvB.DataBind();
            }

            // Functionality for dropdownlist etc no longer works correctly, but new data from gvA shows correctly in gvB
            if (grvSender.ID == "gvA")
            {
                if (IsPostBack)
                    gvB.DataBind();
            }

我已经在人类已知的每个可能的地方调用了 gvB 的数据绑定方法,但同样的问题仍然存在……修复问题 A 给我带来问题 B,修复问题 B 给我带来问题 A。

任何想法都会很棒。我可以看到这是非常愚蠢的事情,但我现在几乎整天都在盯着代码,我没有想法。

【问题讨论】:

  • 您提供的代码是否在Page_Load事件中?
  • 我很困惑 - 如果 (!ispostback) 永远不会起作用,因为这意味着它只会在第一次加载页面时发生,因此你为什么要检查回发?
  • 如果你总是要绑定它,为什么还要检查PostBack
  • 我最终将绑定添加到我可以检查的任何内容中,以检查为什么 A 或 B 不起作用(因此在示例中添加了它)。 jams 提供的解决方案无需任何回发检查即可工作。我只是绑定网格,我的两个问题都解决了。

标签: c# asp.net data-binding gridview


【解决方案1】:

您应该为您的代码使用Page_PreRender 事件,您也可以使用else 编写您的代码。

        if (grvSender.ID == "gvA")
        {
            if (!IsPostBack)
                gvB.DataBind();
        }

        else
        {
            if (IsPostBack)
                gvB.DataBind();
        }

【讨论】:

  • 你把我从无尽的挫折中解救了出来。非常感谢!完美运行!
猜你喜欢
  • 2011-04-09
  • 2014-06-05
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 2020-04-23
  • 1970-01-01
  • 2010-11-19
  • 1970-01-01
相关资源
最近更新 更多