Silverlight Treeview 相关操作:加载,保存,索引节点,节点移动,模板节点
中国IT站 www.chinaitz.com 2009-3-21

  最近一个Silverlight项目中,需要多处表达展示内容的“父子”关系。自然用“树”来表达自然是再好不过。Ms Toolkit中包含了TreeView控件,很好的满足了需求。

   要表述树状关系,数据库的设计一定要合理,不然这层关系在加载的时候就会很痛苦。另外,根据需求,树状节点的展示还要有一定的顺序,所以一棵树在保存的时候,每个节点在树中的位置也要有所记录。

   数据库设计

CREATE TABLE BASIC_INFO
(
  ID        NUMBER(22,3),
  NAME      VARCHAR2(100 BYTE),
  PARENTID  NUMBER(22,3),
  GRADE     NUMBER(1),
  MEMO      VARCHAR2(100 BYTE),
  IDX       NUMBER(5)
)

   这样,加载的时候就可以根据ID,ParentID找到父子关系,并根据IDX来加载ID在树中的索引。这个索引要从树的第一个节点开始深度遍历,根据遍历到的节点的顺序记录其索引。

  -树的加载

  string sqlTv = "SELECT * FROM PDM_BASIC_INFO ORDER BY IDX ASC";

void client_getProjectInfoCompleted(object sender, getProjectInfoCompletedEventArgs e)
        {
                      if (e.Error == null)
            {
                tvshow.Items.Clear();

ObservableCollection<ProjectInfo> listsForProject = new ObservableCollection<ProjectInfo>();

                listsForProject = e.Result;

                //添加Title Node
                TreeViewItem titleNode = new TreeViewItem();
                titleNode.FontSize = 15;

               //为树加载标题节点
                //titleNode.Background = new SolidColorBrush(Colors.Cyan);
                Grid gridTitle = getTitleGridTemplate();
                setTitleData(gridTitle);
                titleNode.Header = gridTitle;

                // titleNode.Background = null;
                tvshow.Items.Add(titleNode);


                ///加载添加Node
                AddTreeNodeForProject(0, null);

           
            }
            else
            {
                MessageBox.Show("操作异常,请重新作业" + e.Error.Message, "注意", MessageBoxButton.OK);
            }
        }

共5篇1 2 3 4 5 下一页
责任编辑:admin本文仅代表作者观点,与中国IT站立场无关。
收藏】 【推荐】 【投稿】 【 】 【打印】 【关闭
评论加载中...