在保留原始列值的同时创建用户友好的下拉菜单?

时间:2011-08-02 23:15:01

标签: c# asp.net sql-server

我正在尝试使用以下列创建用户友好的下拉列表:

LNAME, FNAME, USERID

这是我的SelectCommand

SELECT ISNULL(LNAME,'') + ', ' + ISNULL(FNAME,'') + ' (' + ISNULL(USERID,'') + ') ' AS FullName FROM USER ORDER BY FullName

结果是:

LNAME, FNAME (USERID)

这就是我想要的。我正在尝试将DataValueField设置为USERID以便在SelectedIndexChanged中使用。现在它仅在DataValueField设置为FullName时才有效。将其设置为USERID时,我收到以下错误:

  

DataBinding:'System.Data.DataRowView'不包含属性   名为'USERID'。

我需要使用USERID进行下一步。有没有办法从USERID语句中的别名中提取SELECT

2 个答案:

答案 0 :(得分:2)

如果没有看到您的代码,很难给出明确的答案,但我建议您选择“用户友好”值以及UserID:

SELECT ISNULL(LNAME,'') + 
       ', ' + 
       ISNULL(FNAME,'') + 
       ' (' + 
       ISNULL(USERID,'') + 
       ') ' AS FullName,
       UserID
FROM USER ORDER BY FullName

然后将UserId指定为DataValueField。现在您没有选择UserId,所以如果您尝试将其指定为DataValueField,它将会爆炸。

答案 1 :(得分:1)

将SQL更改为单独的值和标签(文本)

SELECT
   USERID, -- what the user actually selects
   ISNULL(LNAME,'') + ', ' + ISNULL(FNAME,'') + ' (' + ISNULL(USERID,'') + ') '
           AS FullName --what user sees and appears to SELECT
FROM
   USER
ORDER BY
   FullName

然后绑定

  • DataValueField到USERID
  • DataTextField到Fullname

example on MSDN显示:价值没有空格,例如“Dark Khaki”vs“DarkKhaki”