代码之家  ›  专栏  ›  技术社区  ›  Jason Berkan whiteproud

什么时候应该使用page.databind()与control.databind()?

  •  19
  • Jason Berkan whiteproud  · 技术社区  · 15 年前

    在ASP.NET中,可以单独绑定控件(即 GridView1.DataBind() )或者你可以打电话 Page.DataBind() 绑定页面上的所有控件。

    这两个电话有什么特别的区别吗?有没有什么时候一个比另一个更受欢迎?

    4 回复  |  直到 6 年前
        1
  •  8
  •   Juan    6 年前

    供选择 Page.DataBind() 对战 Control.DataBind() ,这是微软 guidance :

    “两种方法的工作原理相似。主要 区别在于所有的数据源 绑定到其服务器控件 后 Page.DataBind 方法是 打电话。没有数据呈现给 控件,直到显式调用 要么 DataBind Web方法 服务器控件或直到调用 页面级 第.databind页 方法。 通常情况下, 数据页 (或) 数据绑定 ) 从调用 Page_Load 事件。“

    根据当前的页面方案,如果需要单独指定控件数据绑定,则会出现这种情况。对于绑定控件的详细控制级别和绑定控件时,我选择控件级别 DataBind() 方法。

        2
  •  11
  •   John Saunders    15 年前

    Page.DataBind Control.DataBind . 都不 Page 类,也不 TemplateControl 类重写 控件.databind .

    控件.databind 只是打电话而已 OnDataBinding 对于控件,然后它调用 DataBind 对于每个子控件。

        3
  •  7
  •   Chris    15 年前

    在ASP.NET页面中,可以直接绑定到页面代码隐藏类的公共/受保护属性。例如:

    <form id="form1" runat="server"><%#HtmlUtility.HtmlEncode(MyProperty.ToString())%></form>
    

    在这种情况下,没有特定的控件来调用.databind(),页面本身就是控件。调用page.data bind()也会在所有子控件上调用data bind(),因此,如果已经在执行page.data bind(),则不需要单独对控件进行数据绑定。

        4
  •  0
  •   Juan    6 年前

    这不是对两个电话之间的细微差别的直接回答,但是 关于 DataBind() VS Page.DataBind() 我想分享一个有趣的经历,它也可以真正指导你在这两者之间进行选择:

    我花了整整一天的时间来研究为什么大型Web应用程序中的Ajax调用和事件会被破坏。( ItemCommand 未在回调和回发、丢失引用等时引发)。

    原因是我有一个ASCX打电话给 数据页() 而不是 数据库() 就其本身而言。

    当你找到它的时候,它看起来很明显,但是当你在一个50万行的应用程序中处理奇怪的行为,并且在母版/页面/控件中处理很多复杂的行为时,它就不那么明显了。 所以当心 数据页() 如果你打错电话!