原文出处: [习题]DropDownList的子选项(DataTextField),出现两个字段
http://www.dotblogs.com.tw/mis2000lab/archive/2010/11/16/dropdownlist_two_datatextfield.aspx
想要让DropDownList的子选项(DataTextField),出现两个字段
如果您透过 SqlDataSource的精灵来作,DataTextField只能放一个字段。
必须自己写程序来处理才行。
这是在论坛上看见的发问,参考数据如下:
http://www.blueshop.com.tw/board/FUM20041006161839LRJ/BRD20101114072706MJM.html
http://social.msdn.microsoft.com/forums/zh-TW/236/thread/94722bd1-8701-4e64-90e6-de9ade86b733
作法有两种。
因为要撰写 ADO.NET程序,所以比较适合放在本书「上集」的第十四章
ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)
首先,NameSpace都要自己宣告这些
Imports System
Imports System.Web.Configuration
Imports System.Data
Imports System.Data.SqlClient
第一,是透过 SQL指令来处理。
Protected Sub Page_Load(ByValsender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Conn As SqlConnection = NewSqlConnection
Conn.ConnectionString = WebConfigurationManager.ConnectionStrings("存在Web.Config里面的连结字符串").ConnectionString
Dim dr As SqlDataReader = Nothing
'==重点!!== 透过SQL指令解决!==
Dim cmd As New SqlCommand("selectid, title, author, title+author as NewField from test", Conn)
Try '==== 以下程序,只放「执行期间」的指令!=====================
Conn.Open() '---- 这时候才连结DB
'---- 这时候执行SQL指令,取出数据。
dr = cmd.ExecuteReader()
'dr.Read()
DropDownList1.DataTextField = "NewField" '==重点!!==
DropDownList1.DataValueField= "id"
DropDownList1.DataSource = dr
DropDownList1.DataBind()
Catch ex As Exception '---- 如果程序有错误或是例外状况,将执行这一段
Response.Write("<b>ErrorMessage---- </b>" + ex.ToString() + "<HR/>")
Finally
If Not(dr Is Nothing) Then
cmd.Cancel()
dr.Close()
End If
If (Conn.State= ConnectionState.Open) Then
Conn.Close()
Conn.Dispose()
End If
End Try
End Sub
第二,是写程序慢慢处理每一个「子选项」
Protected Sub Page_Load(ByValsender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Conn As SqlConnection = NewSqlConnection
Conn.ConnectionString = WebConfigurationManager.ConnectionStrings("存在Web.Config里面的连结字符串").ConnectionString
Dim dr As SqlDataReader = Nothing
Dim cmd As New SqlCommand("selectid, title, author from test", Conn)
Try '==== 以下程序,只放「执行期间」的指令!=====================
Conn.Open() '---- 这时候才连结DB
'---- 这时候执行SQL指令,取出数据。
dr = cmd.ExecuteReader()
Dim iAs Integer = 0
'====== 重 点!!======================
Whiledr.Read()
DropDownList1.Items.Add(dr("title") & " / " & dr("author"))
DropDownList1.Items(i).Value = dr("id")
i = i + 1
End While
'===================================
Catch ex As Exception '---- 如果程序有错误或是例外状况,将执行这一段
Response.Write("<b>ErrorMessage---- </b>" + ex.ToString() + "<HR/>")
Finally
If Not(dr Is Nothing) Then
cmd.Cancel()
dr.Close()
End If
If (Conn.State= ConnectionState.Open) Then
Conn.Close()
Conn.Dispose()
End If
End Try
End Sub
以上程序使用的 ADO.NET (DataReader),其实是从这个范本修改而来。
很简单。 http://www.dotblogs.com.tw/mis2000lab/archive/2008/04/24/3446.aspx
范例很简单了,所以不附上 C#范例。
ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)
....................................................................................................寄信给我 mis2000lab (at)雅虎.com.台湾 ........
ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)
![ASP.NET案例精编--适用于VS2005/2008](http://images.china-pub.com/ebook45001-50000/46063/zcover.jpg)