【问题标题】:How to concatenate multiple columns into single value to display in a dropdownlist?如何将多个列连接成单个值以显示在下拉列表中?
【发布时间】:2012-05-07 19:48:24
【问题描述】:

我有一个用于填充下拉列表的日期字段。日期字段是这样的2012-05-01 00:00:00,我需要下拉列表看起来像这样5/2012。但是要拧紧东西,我需要先把日期拆开,然后再装回去。

具体来说,我需要找到所有“不同的”月份和所有“不同的”年份,但我只想找到不同的年份,如果有一个日期字段包含那一年的月份,反之亦然。

所以我有以下数据

表格:预算

id   Item   ItemDate
1     A     5/12/2012
2     B     5/14/2012
3     C     4/5/2012
4     D     4/7/2012
5     E     7/15/2011

所以我希望我的下拉列表仅显示以下内容:

5/2012
4/2012
7/2011

我尝试过使用

SELECT DISTINCT datepart(Month, ItemDate) + ' ' + datepart(year, ItemDate) As ddlList 
FROM Budget

但这会将月份添加到年份 (5 + 2012 = 2017)。

然后是我的asp

<asp:dropdownlist id="ddl1" runat="server" datasourceID="sqldatasrc" DataTextField="ddlList"></dropdownlist>

有什么想法吗?我不确定我是否以正确的方式进行。

【问题讨论】:

    标签: asp.net sql sql-server sql-server-2008


    【解决方案1】:

    ASP.NET

    如果我没记错的话,我相信您可以使用 DropDownList 控件上可用的属性DataTextFormatString 来格式化绑定字段值。您必须将该属性设置为值 {0:M/yyyy}。请确保该物业可用。我在 MSDN 中找不到它。

    我只能找到ListControl.DataTextFormatString Property

    SQL

    在连接这些值之前,您必须将日期时间字段值的 MONTH 和 YEAR 部分转换为 VARCHAR 或字符串数​​据类型。

    演示

    Click here to view the demo in SQL Fiddle.

    脚本:

    SELECT  
    DISTINCT    CAST(DATEPART(MONTH, ItemDate) AS VARCHAR) + '/' + 
                CAST(DATEPART(YEAR, ItemDate) AS VARCHAR) AS ddlList 
    FROM        dbo.Budget
    

    编写相同脚本的替代方法:

    SELECT  
    DISTINCT    CAST(MONTH(ItemDate) AS VARCHAR) + '/' + 
                CAST(YEAR(ItemDate) AS VARCHAR) AS ddlList 
    FROM        dbo.Budget;
    

    创建和插入脚本:

    CREATE TABLE dbo.Budget
    (
         Id         INT         NOT NULL 
      ,  Item       VARCHAR(10) NOT NULL
      ,  ItemDate   DATETIME    NOT NULL
    )
    
    INSERT INTO dbo.Budget (Id, Item, ItemDate) VALUES
     (1, 'A', '05/12/2012'),
     (2, 'B', '05/14/2012'),
     (3, 'C', '04/05/2012'),
     (4, 'D', '04/07/2012'),
     (5, 'E', '07/15/2012');
    

    输出:

    DDLLIST
    -------
    4/2012
    5/2012
    7/2012
    

    【讨论】:

      猜你喜欢
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      • 2016-02-13
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 2021-05-07
      相关资源
      最近更新 更多