2013-03-12 91 views
-2

我想排序下拉列表,但确保项目“其他”存在于排序的dropdownlist的末尾。我已尝试使用Order by排除'Other',然后使用'union''other'附加到排序结果。但它不工作。排序下拉列表,但在排序列表末尾包含“其他”列表项目

+2

重复多次。在您的ORDER BY中使用CASE语句。 – bernie 2013-03-12 17:27:05

+0

当您使用UNION将查询放在一起时,您只会在整个事物的末尾获得一个ORDER BY。所以你需要其他的东西,比如SortOrder列(或者CASE语句)来把它们排列好。 – criticalfix 2013-03-12 17:36:59

回答

0

首先,感谢那些在这里给出了宝贵建议的人。这更多的是SQL查询构造的疑问。我遇到的问题是我无法在查询中使用ORDER BY之后使用UNION,其结果将被用于填充ASP.NET控件下拉列表。我发现的简单解决方案是在SELECT语句中添加一个分配给ddlitem.value的新伪列,然后在该列中添加ORDER BY。窍门是将ddlitem.value指定为999(或一个大值)(ddlitem.text - OTHER),以便在使用该伪列执行ORDER BY时始终结束。

0

没有关于您正在使用的控件的更多信息(尝试使用您的控件集名称更新您的标签!)不可能给您一个代码来解决您的问题的具体示例。 这是因为有多个图层可以订购您的下拉列表数据;该控件可能会保留来自SQL数据集的原始顺序,但它可能不是。它可以有一个默认设置,以字母排列元素等... 我已经成功地在两种方式处理这种情况:

1.通常可以将数据元素单独添加到下拉列表中列表中的控制初始化代码。您只需通过代码添加“其他”到列表的末尾沿

ddlUnknownControl.Add(new ddlElement("Other")

行2,当你只需要在你想一些数据进行排序(通常比一个更具体的方式一个值),您实际上可以在您的表中放置一列专门用作订购数据的索引。小心这个!它必须仔细维护,然后,为了保证您的订单得到保留,您需要将您的信息作为一组标签,值对和订单中的值排序(其中值为索引和标签是文本信息)。