2013-05-16 25 views
0

我有下面的代码在ASP.NET中填充下拉列表。当我使用单个值时,一切都像魅力一样,但我希望DataTextField使用来自数据库的两个字段,而不是一个。任何援助将不胜感激。我曾尝试多种方法,但似乎没有任何工作:(DropdownList.DataTextField中的多个值不起作用

Dim connstr As String = Session("ConnStrEP") 
    Using con As New SqlConnection(connstr) 
     Using cmd As New SqlCommand() 
      cmd.CommandType = CommandType.StoredProcedure 
      cmd.CommandText = "GetWaivers" 
      cmd.Connection = con 
      con.Open() 
      Dim dr As SqlDataReader = cmd.ExecuteReader() 
      dr.Read() 
      Code.DataSource = dr 
      Code.DataTextField = String.Format("{0}, {1}", Code.SelectedValue("tblWVCode").ToString(), Code.SelectedValue("tblWVDesc").ToString()) 
      Code.DataValueField = "tblWVDesc" 
      Code.DataBind() 
      dr.Close() 
      con.Close() 
     End Using 
    End Using 

更新: 我生成的SQL以下,但是当我执行存储过程的SQL Server 2008中我收到一个错误“进行数据操作无效类型。操作等于增加,类型NTEXT等于。 “

SELECT TblWvCode, TblWvDesc, (TblWvCode + ' - ' + TblWvDesc) As FullList FROM EP.dbo.WaiverVarianceTbl 
+0

请参阅此链接http://stackoverflow.com/questions/11367431/sql-server-2000-invalid-operator-for-data-type-operator-equals-add-type等于 – Adam

回答

0

你不能做到这一点,你需要改变你的SQL查询返回你所需要的格式领域。DataTextField必须是场或物业名称

您的查询应该是这样的

SELECT 
    TblWvCode, 
    TblWvDesc, 
    (
     CAST(TblWvCode as nvarchar(max)) + ', ' + CAST(tblWVDesc as nvarchar(max)) 
    ) as FullList 
FROM EP.dbo.WaiverVarianceTbl 

,然后你的VB代码会是这样的

Code.DataTextField = "FullList" 
Code.DataValueField = "tblWVDesc" 
+0

请参阅上面的更新。 –

+0

@ChrisLombardi:更新了我的答案 –

0

修改存储过程来串联tblWVCode和tblWVDesc值,并在一个新的领域归还,您可以使用该字段的DataTextField