MIS2000 Lab. -- ASP.NET学习&分享 / ASP.NET案例精编(清华大学出版社)
您好,我来自台湾。很高兴与各位分享一些成果。希望对您有帮助。出版书籍是「ASP.NET案例精编 / 清华大学出版社」。

原文出处:  [习题]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(人民幣)

 

ASP.NET案例精编--适用于VS2005/2008

   

 

 

首先,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(人民幣)

 

ASP.NET案例精编--适用于VS2005/2008

   
posted on 2010-11-17 12:11  MIS2000 Lab.  阅读(301)  评论(0编辑  收藏  举报


ASP.NET案例精编——适用于VS 2005/2008(配光盘)
 

当当网购买 http://product.dangdang.com/product.aspx?product_id=20583373&ref=search-1-pub