如何实现基于多列数据的有序ASP.NET CheckBoxList?
解决方案
首先修正你的SQL查询逻辑,当前的SELECT DISTINCT style1, style2是取两个字段的唯一组合,无法实现将两个字段的所有样式值合并去重后排序的需求。你需要通过UNION合并两个字段的所有值,再去重排序:
修改后的SqlDataSource配置
<asp:SqlDataSource ID="SqlStyle" runat="server" ConnectionString="<%$ ConnectionStrings:DC %>" SelectCommand="SELECT style AS DisplayText, style AS ValueText FROM ( SELECT style1 AS style FROM products UNION SELECT style2 AS style FROM products ) AS CombinedStyles WHERE style IS NOT NULL AND style != '' ORDER BY style ASC"> </asp:SqlDataSource>
对应调整CheckBoxList的绑定字段
因为查询结果统一用DisplayText和ValueText作为显示和值字段,所以修改CheckBoxList的属性:
<asp:CheckBoxList ID="CheckBoxListStyle" CssClass="CBL" runat="server" DataSourceId="SqlStyle" OnSelectedIndexChanged="CheckBoxListStyle_SelectedIndexChanged" AutoPostBack="True" DataTextField="DisplayText" DataValueField="ValueText"> </asp:CheckBoxList>
逻辑说明
UNION会自动合并style1和style2的所有值并去重,避免重复的样式选项- 外层查询通过
ORDER BY style ASC实现所有样式的升序排列 WHERE子句过滤掉空值或空字符串,避免无效选项
这样就能得到你需要的升序列表:1、2、3、4,无需拼接多个CheckBoxList。
内容的提问来源于stack exchange,提问作者CDI
相关产品推荐
相关产品推荐

