◎以上程式範例AdoNet02.aspx,如在頁框下不能操作,請開新視窗操作
◎如果有問題歡迎您提出,dnowba很需要有人和我一起討論
'===自已寫的===== Imports System.Data '================ Partial Class AdoNet02 Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.Label1.Text = "ADO.NET範例(AdoNet02.aspx):詳解DataTable裡建立DataColumn方式" Me.Button1.Text = "輸入完後按一下就會新增欄位(DataColumn)並建立第一筆資料(DataRow),並用GridView的方式檢視" ' ===== 後記:這個程式範例不能實際應用的,因為每按下一次按鈕PostBack時,這些緩存資料就被重新定義了一次 ===== ' ===== 另外因為他在產生DataSet到新增DataRow資料,都是在客戶端上的記憶體上運作,不過這也再次說明了ADO.NET 的好處 ===== End Sub Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click ' ===== 詳解DataTable裡建立DataColumn方式 ===== ' 在建立了DataSet、DataTable二個物件後,我們還要進一步的建立資料表的結構(Schema)-DataColumn ' ===== 建立DataSet和DataTable ===== Dim dsPOS As New DataSet Dim dtProduct As DataTable = dsPOS.Tables.Add("Product") ' ===== 建立第1個DataColumn(資料欄位):ProductName ===== ' 定義新的DataColumn:在建立資料欄位的時候,我們要設定好欄位名稱、資料型態、是否允許null空值、預設值…等, ' 下面設定DataTable中的第一個欄位「dcProductName」 ' 設定欄位名稱 Dim dcProductName As New DataColumn("ProductName") ' 設定資料型別 dcProductName.DataType = GetType(System.String) ' 設定資料最大字元,因為型態是sring,所以要再設定他的字元限制 dcProductName.MaxLength = 40 ' 設定是否允許空值,如下設false表示不允許空值,也就是一定要填入(空白鍵輸入的空白字串也算填入喔) dcProductName.AllowDBNull = False ' 把DataColumn塞回DataTable裡 dtProduct.Columns.Add(dcProductName) ' ===== 建立第2個DataColumn:ProductID ===== ' 這裡把不NEW了,直接用該屬性下提供的方法,把dcProductID的指定名稱、資料型別寫在一行, ' 也順道塞到了DataTable裡) Dim dcProductID As DataColumn = dtProduct.Columns.Add("ProductID", GetType(System.String)) ' 用With...End With 陳述式,讓他重複參考DataColumn下提供的屬性來作設定 With dcProductID ' 其中unique的意思是該欄位的值是唯一值。 .Unique = True .MaxLength = 10 .AllowDBNull = False End With ' 最後再上一個主索引鍵,這個key的設定不是在DataColumn裡,而是在DataTable下 ' 而定義索引鍵和把某欄位設成Unique = True有點不同,索引鍵當然名稱不能重複, ' 不過也有些欄位是只要不重複名稱就可以的… ' 像是摸彩系統中,彩卷號碼是主索引值,在中獎清單中,我們可以把中獎員工ID設為UNIQUE, ' 這樣員工就不可能重複中獎…(當然員工ID在員工清單中是主索引值) dtProduct.PrimaryKey = New DataColumn() {dcProductID} ' ===== 建立第3個DataColumn:訂單統計 ===== Dim dc訂單統計 As DataColumn = dtProduct.Columns.Add("訂單統計", GetType(System.Int32)) With dc訂單統計 .DefaultValue = 0 .AllowDBNull = False End With ' ===== 建立完DataTable裡的DataColumn後,用GridView控制項來顯示 ===== ' 這裡是直接把GridView控制項拉到設計頁面上,在程式碼部分指定他的來源 ' 如果在不新增欄位值的情形下,GridView是不會顯示每個欄位標頭的。 ' 所以我們這裡小小的新增一下資料。 Dim drNewProduct As DataRow drNewProduct = dtProduct.NewRow drNewProduct("ProductID") = Me.TextBox1.Text drNewProduct("ProductName") = Me.TextBox2.Text dtProduct.Rows.Add(drNewProduct) ' 指定GridView的來源和成員 Me.GridView1.DataSource = dsPOS ' 成員的指定我下面可以直接指定,當然用返回值的方式來找也可以,我喜歡用第二種。 'Me.GridView1.DataMember = "Product" Me.GridView1.DataMember = dtProduct.TableName Me.GridView1.DataBind() End Sub End Class
沒有留言:
張貼留言