0

我有下面的代码填充 ASP.NET 中的下拉列表。当我使用单个值时,一切都像一个魅力,但我希望 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 存储过程时收到错误消息。“数据类型的运算符无效。运算符等于 add,类型等于 ntext。”

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

2 回答 2

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"
于 2013-05-16T14:14:02.517 回答
0

修改存储过程以连接 tblWVCode 和 tblWVDesc 值并将它们返回到一个新字段中,然后您可以将该字段用于 DataTextField

于 2013-05-16T14:15:44.317 回答