1

我正在将旧的 vb 桌面应用程序迁移到 ASP.NET Web 应用程序版本。该应用程序允许某人逐层指定建筑物的报价,指定每个楼层需要多少个项目。现有的 DB 是一个非常简单的 M:N Join

+----------+    +-----------+    +----------+
| Floors   |    | FloorItems|    | Items    |
+----------+    +-----------+    +----------+
| FloorId  |--->| FloorId   |    |          |
| ...      |    | ItemId    |<---| ItemId   |
|          |    | Quantity  |    | ...      |
+----------+    +-----------+    +----------+

在现有的桌面应用程序中,开发人员将这个 2D 矩阵网格组合在一起,允许最终用户在一个屏幕中添加所有楼层上所有项目的数量。例如

        | Item 1 | Item 2 | Item 3 | Item 4 | ....
--------+--------+--------+--------+--------+------
Floor 1 |
Floor 2 |
Floor 3 |
Floor 4 |
...     |

这会在 Web UI 中引发各种问题,因为随着项目/产品目录的增长,网格可能会变得非常广泛。页面大小也是一个问题。更不用说验证潜在的数百个屏幕输入并定期自动保存它们......

任何人都可以推荐任何其他 UI 模式来处理 Web 应用程序中潜在的大型输入矩阵吗?或者在网上指出一些好的例子?

(我正在玩弄在 Silverlight 中做这个屏幕的想法,允许网格在 UI 中尽可能向右滚动,并在焦点退出时保存每个文本框)

4

2 回答 2

1

如果您只是想让列表向下而不是横向增长,为什么不使用树控件呢?显示器只会缩小,您可以展开和折叠视图,这样它们一次只能在一层上工作。如果你想实现一些检查点验证/保存,然后在楼层添加编辑、取消和保存按钮,数据是只读的,直到它们点击编辑,你可以在保存时验证。如果用户尝试编辑另一个楼层,则警告他们需要保存或取消当前楼层。

Building
|
+--Floor 1       [Edit] [Cancel] [Save]      
   |
   +-- Item 1   _Qty Entry_
   |
   +-- Item 2   _Qty Entry_
   |
   +-- Item 3   _Qty Entry_
   |
   +-- Item 4   _Qty Entry_
|
+--Floor 2    
   |
   +-- Item 1   _Qty Entry_
   |
   +-- Item 2   _Qty Entry_
   |
   +-- Item 3   _Qty Entry_
   |
   +-- Item 4   _Qty Entry_
于 2011-11-28T13:33:00.970 回答
1

首先,我会尝试看看客户是否愿意减少他们想要查看的数据量。
在4楼编辑物品数量时,真的需要查看2楼的物品吗?
或者——也许,在编辑项目#3 时,用户并不真正关心项目#12 的数量。

如果以上任何一项的答案是肯定的,您可以重新设计屏幕以一次只显示一个楼层/项目,这几乎可以解决您的问题。

如果您只是必须显示大量数据,那么有许多网格控件可以很好地处理大量数据。
我个人喜欢 jQuery 的jqgrid。显然还有更多。

于 2011-11-27T16:35:16.277 回答