我正在写一silverlight应用程序,查询网服务来填充树控制。每个元素都将有至少2级别的儿童,所以是这样的:

a
+-b
  +-c
d
+-g
  +-h
e
+-i
  +-j
f
+-k
  +-l

该网服务API是这样的,我只能得到一个级别的儿童节点,在一段时间,所以第一次,我可以得到一,d,e,f。获得b、g、i、k、我要做4次。同样,我要请4个旅行得到的c、h、j l.(服务实际上不会让我得到的所有节点中的一个旅行,但它并没有给我父母-孩子关系以及它:-()

我的问题是这个:我应该做的用户等待一段时间前面的同时,我得到的所有节点的树形图,或者我是不是应该得到的前几节点、并得到其他节点上需求,或者在背景的任务?此外,该节点可以改变异步,因此,如果我得到的所有节点,我只需要一个"刷新"键树视图,并且如果我这样做的需求,我将必须有一个高速缓存战略。

这是最适合的用户?

有帮助吗?

解决方案

其中加载第一级前面,然后根据需要在通过点播重写背景加载的其余项目的折衷。如果加载的节点广度优先(例如,d,E,F则B,G,I,K),而不是深度第一(例如,d,E,F,接着B,C),您可以装载重定向到聚焦在最近展开的节点上。

其他提示

就个人而言,作为一个用户,我喜欢所有的数据将载入前面这样,一旦程序完成装载我可以相信,我不必再等待(或至少是非常少)

但是,我想这取决于几个特征的应用程序/数据:

  • 如何动态的数据?它更新更经常则的速率,用户探讨节点? 如果是这样,那么你将要读取的数据作为用户探讨了它,否则你可能可以逃脱,只更新它偶尔和检查最新的数据之前,执行重要的行动。
  • 有多少数据的用户探索在正常使用? 如果他们不断探索在整个树,然后将具有整个树装是重要的。另一方面,如果大多数用户通常将只扩大一小部分树,然后也许负载上的需求量更好的所以你不要浪费他们的时间负载数据,他们将永远看不到呢。
  • 有多少影响,与此有关的性能吗?它是否真的需要很长时间负载所有的数据? 如果数据是不是太多了,也许整件事可以装在一个几秒钟的时间,在这种情况下的工作量来实现最优化,将不重要的是要最终用户,并反过来会不会有一个良好的投资回报。

最有可能你没有明确这些问题的答案,但他们可能好时要考虑你们攻击这个有趣的问题。

简短的回答是,使用户等待尽可能少。他们会诅咒你的名字,如果他们必须等待的10-20秒上应用程序负荷,但没有注意到0.1-0.2秒一棵树的节点的扩大。

我有一个应用程序,在生产类似的结构。我不能负载的在最前面,因为它们会有效载荷整个数据库。这是我的战略:

  • 树控制的始于1一级展开以下根。
  • 每个膨胀的节点有一个虚拟儿童节点,以便获得[+]膨胀标显示
  • 当一个节点扩大,火灾事件,这是困的程序。如果只有孩子的节点是虚设的一个,伪被删除和儿童是从该数据库。
  • 变化的数据没有反映自动通过可见的节点,但是该上下文的菜单棵树有一个刷新的项目,可以用来刷新节点。

我们认为表示异步更新,但是倾向于避免它因为大量数据可以显示在树和我担心的数据库载如果我检查他们所有的更改。

该应用程序是它,C#编写的使用。网2.0.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top