6

这是 DataBind 如何工作的一般问题......

我有一个带有 GridView 的简单页面(在 aspx 代码中)绑定到 ObjectDataSource。

我可以查看由 ObjectDataSource 调用的 Select() 函数,以查看它在初始加载和每次回发时被调用。我有一些逻辑会在回发时发生,这会影响 GridView 的数据,我想稍后在回发中调用 GridView.DataBind(),在我进行了一些更改之后。

有没有办法防止每次回帖时发生的自动重新绑定?这是否意味着我不能为此控件使用 ObjectDataSource?

4

3 回答 3

12

您是正确的,因为您正在寻找的细粒度控制是不可能的,并且需要后面的代码。ASP.NET 的数据源对象不过是个痛点。你会发现,当你使用它们时,你会一次又一次地遇到这样的情况。

您会发现的一些问题是:

  • 非强类型
  • 不灵活(正如您所指出的)
  • 混淆演示代码

我已经开始在后面的代码中进行所有数据访问,并且没有回头。

于 2009-05-06T19:17:06.107 回答
9

我也与这种自动绑定进行了斗争,并认为我在这里发布了我的解决方案:

  1. 从 ASPX 页面中删除“DataSourceID”,当它没有设置时,没有自动绑定
  2. 仅在需要 DataBinding 时在 CodeBehind 中设置 DataSourceID:myGridView.DataSourceID = "MyDataSource";
  3. 不要显式调用 myGridView.DataBind(),数据绑定会在 PreRender 自动发生

我花了一段时间才弄清楚这一点,但现在一切正常。

语境

我使用 ObjectDatasource,因为它会自动为我处理 Gridview 的所有分页排序。我正在使用带有 Linq2SQL 的数据层,并使用它的 Skip() 和 Take() 方法仅加载填充一页 GridView 所需的数据量。

使用ObjectDataSource的SelectMethodSelectCountMethod

于 2010-06-10T14:48:43.347 回答
2

是的。如果您想在数据绑定发生时进行这种控制,您需要在后面的代码中进行。

于 2009-05-06T19:15:36.407 回答