2009-02-08 24 views
1

允许用户定义表格顺序的最佳方法?允许用户定义表格顺序的最佳方法是什么?

我们正在使用SQL Server 2005和DevExpress控件。

我们有一个包含以下内容的表:

  1. 进程A
  2. 进程B
  3. 工艺C
  4. 报告A
  5. 申报书B
  6. 报告Ç

我们希望允许用户将订单更改为任何他们想要的。

这里是一个例子:

  1. 方法C
  2. 方法A
  3. 方法B
  4. 报告乙
  5. 报告A
  6. 报告Ç

为了适应这个 我们将DisplayOrder(INT)字段添加到由我们的应用程序维护的表中。

使用INT字段是用户定义订单的最佳解决方案吗?

有没有其他的方法来完成这个?

我想问的原因是,在我们目前的应用程序中,需要大约1秒钟的时间来移动一行(或多个)。我即将破解代码,以了解为什么它需要这么长时间,如果您的Stack Overflow专家有任何好的想法,我可能会在当时实施它们。

如果你很好奇,这里是我相信我们的应用程序允许DisplayOrder编辑:

  1. 装载表到一个GridView
  2. 选择行
  3. 点击一个下移按钮(有也是一个Move Up按钮)
  4. Click事件会将当前行的DisplayOrder与它下面的行交换。
  5. 的变化,两者的记录,写回数据库
  6. 这需要每次点击约1秒(即10次点击等于10秒)
+1

我期待做类似的事情(向上或向下移动一排)。你有没有可以发布的示例代码? – Sesame 2009-11-05 15:14:59

回答

1

难道是采取每交换1秒因为您每次点击更新数据库?甚至可能再次重新选择数据?

为什么不选择数据到本地对象。绑定到网格中的这些对象。当您上下移动对象时,请调整其显示顺序属性。然后只对DB进行更新

  1. 当用户最终点击保存。
  2. 如果对象的任何值已更改。
1

因为用户可能会改变他们的想法,并且正如彼得莫里斯所暗示的那样,我会将保存决定移到一个明确的保存按钮,以便重新排序。

要考虑的其他事项 - 显式移动到顶部和移动到底部项目。

我在企业系统中使用这种方法实现了一个非常成功的用户界面,用于用户选择可搜索项目和报告项目。用户界面的更多细节是available for you to see(善良,请记住它是大约15岁 - 回到平淡单日!)。许多用户测试的一个重要改进 - 保存此订单的甜蜜点不是每个用户或每个公司,而是每个组。团队是一起工作的人,他们有一个相同的起始页面(本质上是大量连接的图中的同一个根)。我们在该组织中有大约7个独特的团体。因此,如果您要为每个用户或每个组采用一种方法,则需要将排序数据拉出到将数据键映射到序数整数的单独表中。

0

如果您所在的区域正在讨论用户想要设置和保留的显示顺序,该显示顺序需要与用户标识和他或她想要查看的记录的ID以及显示顺序栏位于单独的表格中。然后,获取数据到该页面的查询将使用加入用户偏好表。

如果您只是想在人们看屏幕时临时设置顺序,请通过用户界面进行操作。

无论如何不要对基表中的记录进行重新排序,这是一个糟糕的选择,因为您会遇到竞争条件,其中用户a想要一个设置,而用户b正在尝试更改为不同的设置。

相关问题