2010-02-24 80 views
0

我使用ObjectDataSource绑定了自定义对象。我有三级绑定:一个DropDownList(Department)过滤下一个DropDownList(Category)过滤GridView(问题)。每个ObjectDataSource绑定到前一个控件的SelectedValue(当然除了第一个)。ASP.NET三级数据绑定

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

我怎样才能让这个三级绑定正常工作?我无法弄清楚我是否错过了一些东西。如果必须的话,我可以在第一个列表上实现SelectedIndexChanged并手动强制更新网格,但这并不理想。谢谢你的帮助!

有点多信息:我没有默认的“选择一个项目”选项。这意味着当我更改部门时,会自动选择第一个类别。我希望这个绑定能够足够聪明,从而一路下滑。这足够聪明,我不必做if(!IsPostBack){//加载数据}。

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

回答

1

您可以清除网格,直到第二个值被刷新为止?你在寻找一个Ajax appraoch,还是使用回传?

没有一个我知道的自动解决方案,所以你需要像你提到的那样做一些事情,因为页面知道如何刷新网格?

+0

由于是数据绑定,我将如何“清除”网格?我正在使用回传。另请参阅上面的“更多信息”一节。谢谢! – 2010-02-24 16:47:51

+0

嘿,grid.DataSource = null; grid.DataBind()可以做到这一点。您必须拥有!Page.IsPostBack代码,或者至少在每次回发时检查下拉列表的状态。 – 2010-02-24 18:38:36

+0

我试着做DataSource = null,DataBind(),但它总是落后一步。 DataSource = DataSource做了诡计,但目前我无法解释为什么。无论如何,感谢您的帮助。 – 2010-02-28 01:01:34