【问题标题】:Duplicate text values in dropdownlist, asp.net下拉列表中的重复文本值,asp.net
【发布时间】:2018-07-01 02:27:12
【问题描述】:

这是我的数据库表,我的下拉列表的 SqlDataSource SelectCommand 和我的下拉列表的文本和值字段属性。我希望我选择的国家/地区具有与之对应的所有 resultsId。我的意思是当我选择西班牙时,我希望 resultid 有 2 和 3。但问题是,在我的下拉列表中,我有重复的国家文本,我无法更改它。

country      resultsId
spain          2
spain          3
china          2
china          4
canada         1
canada         4
england        1
england        3
usa            1
usa            2

    SelectCommand="SELECT distinct countries, resultsid  FROM countrytable" 
    DataTextField="country" DataValueField="resultsid"  

我试过这个 SelectCommand:

    SelectCommand="SELECT resultsId,(select country, count(*) 
    from countrytable group by country having count(*) >1) FROM countrytable

但是现在,我有这个错误:

    Only one expression can be specified in the select list when the 
    subquery is not introduced with EXISTS

我正在使用 sql server 和 asp.net c#

【问题讨论】:

标签: c# asp.net sql-server


【解决方案1】:

您应该为此使用STUFF

select distinct country, STUFF
(
    (select ',' + cast(resultsid as varchar) from countrytable c2 
    where c1.country = c2.country
    for XML PATH ('')),1,1,''
) 
from countrytable c1

【讨论】:

  • 我很高兴知道,如果这是你要找的,你可以接受它作为答案:)
【解决方案2】:

错误很清楚,您的查询必须只为指定的选择子句返回一个值。所以,你可以申请自我加入;

select c.* from countrytable c inner join
(select country from countrytable group by country having count(*) >1) c2
ON c.country = c2.country

【讨论】:

  • 但是这种方式只有一个值从查询中返回,即最多一个。我希望两个 resultsid 值都与选择一起返回。如果可能的话。
  • 我收到此错误消息,没有为“c2”的第 2 列指定列名。我试图修复,但我不能。
【解决方案3】:

您不能使用 SqlDataSource 实现您的要求,因为 Asp.Net 数据绑定控件不支持一项的多个值。因此,您需要准备数据以使一项只有一个值。

您至少有两个选择:

1) 在您的特定情况下,最简单的方法是更改​​您的查询以连接一个字符串中的值,就像它清楚地显示@Bharadwaj

1) 在更常见的情况下,您可以使用ObjectDataSource。您需要创建一个方法,该方法将返回具有DataTextFieldDataValueField 属性的对象集合,例如Country = "spain", ResultIds = "2,3"。在此方法中,您可以使用查询并进行任何 sql 无法完成的数据处理。

无论如何,一个数据源项应该只有一个值(在本例中为连接字符串)。然后,您只需解析字符串以从 DropDownList 中获取值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2021-09-18
    • 2021-12-13
    • 1970-01-01
    • 2018-01-14
    相关资源
    最近更新 更多