【问题标题】:ASP.NET three-level databindingASP.NET 三级数据绑定
【发布时间】:2010-02-24 15:04:28
【问题描述】:

我有使用 ObjectDataSource 绑定的自定义对象。我有三级绑定:过滤下一个 DropDownList(类别)的 DropDownList(部门)过滤 GridView(问题)。每个 ObjectDataSource 都绑定到前一个控件的 SelectedValue(当然第一个除外)。

只有到下一个级别(部门到类别和类别到问题)才能正常工作。当我更改部门时,类别列表会正确更新,但显示的问题来自之前选择的类别。

我怎样才能让这个三级绑定正常工作?我不知道我是否遗漏了什么。如果必须,我可以在第一个列表上实现 SelectedIndexChanged 并手动强制更新网格,但这并不理想。感谢您的帮助!

更多信息:我没有默认的“选择项目”选项。这意味着当我更改部门时,会自动选择第一个类别。我希望绑定足够聪明,可以一直滴下去。它足够聪明,我不必执行 if (!IsPostBack) { // 加载数据 }。

我目前已经实现了 Department_SelectedIndexChanged() 并简单地完成了 Questions.DataSource = Questions.DataSource;。这似乎正确地“刷新”了一切。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: asp.net data-binding


    【解决方案1】:

    您能否改为清除网格,直到刷新第二个值?您是在寻找 AjAX 方法,还是使用回发?

    我知道没有自动解决方案,因此您需要执行您提到的类似操作,因为页面如何知道刷新网格?

    【讨论】:

    • 如何“清除”网格,因为它是数据绑定的?我正在使用回发。另请参阅上面的“更多信息”。谢谢!
    • 嘿,grid.DataSource = null; grid.DataBind() 可以解决问题。您必须拥有 !Page.IsPostBack 代码,或者至少在每次回发时检查下拉列表的状态。
    • 我尝试过 DataSource=null, DataBind(),但总是落后一步。 DataSource=DataSource 成功了,但目前我无法解释原因。无论如何,谢谢你的帮助。
    • 在什么时候绑定、加载或预渲染?也许这与它有关...... datasource = null 对我来说没有问题。
    • 哦,有一件事......设置数据源的问题是通过datasourceID连接到它的ODS,所以这也可能是问题。忘了这一切。
    猜你喜欢
    • 2012-01-11
    • 1970-01-01
    • 2018-06-14
    • 2017-01-30
    • 2013-07-07
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多