RadTreeView无法刷新以显示分层数据源中的更改

时间:2012-11-14 09:24:28

标签: sql data-binding telerik treeview radtreeview

我有一个相当严重的问题,试图让Telerik radTreeView显示底层数据库和数据源的变化。我的方案如下。

  1. 在Load事件处理程序中,初始化radTreeView,如以下示例代码所示:

            radCommentTreeView1.DataSource = Nothing
    
            // Initialize custom data object from custom hierarchical data source class
            cdsPubCommentDataSource = New CommentDataSource(1)
            radCommentTreeView1.DataSource = cdsPubCommentDataSource
    
            // Configure radTreeView from datasource fields
            radCommentTreeView1.DataFieldID = "ID"
            radCommentTreeView1.DataFieldParentID = "ParentID"
            radCommentTreeView1.DataTextField = "Content"
    
            // Bind radTreeView to datasource
            radCommentTreeView1.DataBind()
    
  2. 页面加载正确呈现的radTreeView

  3. 用户尝试通过单击带有服务器端处理程序的按钮来添加或删除节点....

  4. ...以便回发周期从服务器端代码开始,再次运行上面(2)中的Load处理程序,重新绑定radTreeView

  5. ...仅在运行服务器端按钮处理程序之后,通过另一个BLL业务对象成功运行SQL命令(即,SQL数据库已成功修改)....

    < / LI>
  6. 但是,当页面在回发后呈现时,在(5)中删除节点之前,radTreeView仍会反映上面(4)中的原始节点层次结构。

  7. 有人可以指出在单个回发的循环中应该如何实现这个过程 - 如果我在服务器端按钮处理程序结束时在radTreeView上调用DataBind,这似乎确实可以获取数据库更改,但是遗憾的是,它会破坏节点模板的radTreeView格式,因此,任何节点都不会呈现节点数据绑定内容。显然,节点模板需要在页面生命周期的开始实例化,如果在这种情况下,循环后期的数据绑定会破坏模板,我无法告诉页面“返回”并实例化模板再次。但是在处理程序结束时调用DataBind似乎是解决问题的直观正确方法,只是由此导致的节点模板丢失阻止了它的运行。

    我知道为数据源对象使用INotifyPropertyChanged接口的想法,并且已经从DataSource对象成功触发了有问题的事件,即在radTreeView第一次触发的PropertyChanged事件(4)在回发上重新绑定,但我不确定PropertyChanged事件处理程序如何在我描述的场景中提供帮助 - 页面中的PropertyChanged事件处理程序仍然在按钮处理程序之前调用,因此数据库在该阶段尚未更改。 PropertyChanged事件是正确的前进方式,还是有另一种方法更适合在单个回发周期内刷新radTreeView?

    感谢有人能指出我正确的方向解决这个问题。

    此致

0 个答案:

没有答案