2013-05-16 28 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