您的位置:首页 > 运维架构

[习题]DropDownList的子选项(DataTextField),出现两个字段

2010-11-17 12:11 706 查看
原文出处: [习题]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程序,所以比较适合放在本书「上集」的第十四章

[b]ASP.NET案例精编[/b](清华大学出版社 / 作者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

[b]第一,是透过SQL指令来处理。[/b]

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

[b]第二,是写程序慢慢处理每一个「子选项」[/b]

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#范例。

[b]ASP.NET案例精编[/b](清华大学出版社 / 作者MIS2000Lab)

http://www.china-pub.com/46063

2009/5/15上市

市场价 :¥59.80 RMB(人民幣)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: