数据绑定和回发

发布于 2024-07-18 06:16:09 字数 311 浏览 2 评论 0原文

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

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

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

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

This is a general how does DataBind work questions...

I have a simple page with a GridView that is bound (in the aspx code) to an ObjectDataSource.

I can look in the Select() function called by the ObjectDataSource to see that it is called on the initial load and on every post back. I have some logic that happens on post backs that will affect the GridView's data, and I want to call GridView.DataBind() later on in the post back, after I've made some changes.

Is there a way to prevent the automatic rebinding that happens on each post back? Does this mean I can't use an ObjectDataSource for this control?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

予囚 2024-07-25 06:16:09

您是正确的,您正在寻找的细粒度控制是不可能的,并且需要后面的代码。 ASP.NET 的数据源对象只不过是一个**中的痛苦。 您会发现,当您使用它们时,类似的情况会一次又一次地出现。

您会发现的一些问题是:

  • 不是强类型的
  • 不灵活的(正如您所指出的)
  • 使演示代码变得混乱

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

You're correct in that the fine grained control you're looking for is not possible and requires the code behind. ASP.NET's data source objects are nothing but a pain in the a**. You'll find that as you use them you'll get situations like this cropping up again and again.

Some of the problems you'll find are:

  • Not strongly typed
  • Inflexible (as you've noted)
  • Muddy up the presentation code

I've taken to doing all data access in the code behind and haven't looked back.

爱*していゐ 2024-07-25 06:16:09

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

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

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

上下文

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

使用 ObjectDataSource 的 SelectMethodSelectCountMethod

I fought with this automatic binding as well and thought I post my solution here:

  1. remove the "DataSourceID" from the ASPX page, when its not set, there is no automatic binding
  2. set the DataSourceID in the CodeBehind only when DataBinding is needed: myGridView.DataSourceID = "MyDataSource";
  3. do not call myGridView.DataBind() explicitly, databinding happens automatically at PreRender

Took me a while to figure this out, but now wverything works fine.

Context

I use the ObjectDatasource because it handels all the paging and sorting of the Gridview automatically for me. I am using a data layer with Linq2SQL and use its Skip() and Take() methods to load only the amount of data needed to populate one page of the GridView.

Using the SelectMethod and SelectCountMethod of the ObjectDataSource

困倦 2024-07-25 06:16:09

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

Yes. If you want that kind of control over when the databinding happens you need to do it in the code behind.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文