【问题标题】:Binding a SqlDataSource to a GridView: What is the difference between binding via ID and via setting DataSource将 SqlDataSource 绑定到 GridView:通过 ID 绑定和通过设置 DataSource 绑定有什么区别
【发布时间】:2017-04-16 01:07:27
【问题描述】:

我想将 SqlDataSource 绑定到 GridView 以查看和编辑数据库记录。

没什么大不了的(我想)。

但是,

之间似乎存在很大的概念差异
  • 通过 GridView 的“DataSourceID”属性绑定在 aspx 文件中以声明方式进行
  • 通过在后面的代码中设置 'DataSource' 属性进行绑定y

使用第一个,我可以通过声明一个额外的编辑按钮立即获得编辑功能,第二个,我根本无法将更新的值导入数据库。

这两者有什么区别,真的吗?

注意:我对获取代码作为答案不太感兴趣,但更多的是关于差异的解释或手册。

【问题讨论】:

    标签: asp.net gridview webforms sqldatasource


    【解决方案1】:

    GridView1.DataSourceID 需要 Datasource 对象的 id,通常是拖放到页面上的 SqlDataSource 等数据源控件。

    使用页面设计器时,您可以使用 gridview 上下文菜单将数据源“连接”到 gridview。

    或者可以通过编程方式设置,比如在 Page_Load 中:

        GridView1.DataSourceID = SqlDataSource1.ID
    

    Gridview支持多种数据源控件,你不限于SqlDataSource。

    主要区别在于绑定和页面生命周期。

    当您指定 GridView1.DataSourceID 并假设控件可见时,数据绑定将在页面生命周期的 Databind 事件期间自动发生。

    如果您指定GridView1.DataSource,数据绑定成为程序员的义务。除非您明确调用 GridView1.DataBind(),否则不会发生绑定

    还有一件事

    如果使用 SqlDataSource,则有一个名为 CancelSelectOnNullParameter 的漂亮小属性。这应该是不言自明的,默认为 TRUE。只是需要注意一些事情,因为它在我早期的日子里让我很沮丧。

    【讨论】:

    • 您能否提供一些有关与 DataSourceID 的“自动魔术”绑定的链接或更多详细信息。这不仅仅是设置 DataSource 和调用 DataBind 吗?
    • 当然:这里是the Page LifeCycle,在同一页面的下方,the DataBinding events
    • 另外 - 在其最基本、最简单的实现中,您可以设置 DataSourceID 属性并让页面处理绑定操作,或者您可以设置 DataSource 并以编程方式处理绑定。您会发现,有时,即使使用前者,您也可能需要调用 DataBind(),因为缓存和 ViewState 在确定您在 gridview 中看到的内容方面发挥着作用。
    猜你喜欢
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 2016-05-05
    • 2012-03-28
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多