¡¡¡¡ ¡¡¡¡Çåµ¥ 4. ´´½¨ ADO.NET DataTable ¶ÔÏó¡£ ¡¡¡¡ ¡¡¡¡Dim oDataRow As DataRow ¡¡¡¡Dim oDataColumn As DataColumn ¡¡¡¡Dim aPrimaryKey(0) As DataColumn ¡¡¡¡oDS = New DataSet ¡¡¡¡'Create a new DataTable oect ¡¡¡¡oEmployeeDT = New DataTable ¡¡¡¡'Add an event handler for column data changes ¡¡¡¡AddHandler oEmployeeDT.ColumnChanged, _ ¡¡¡¡New DataColumnChangeEventHandler(AddressOf _ ¡¡¡¡ColumnChanged) ¡¡¡¡'Create primary key (PK) col and add it to the columns ¡¡¡¡'collection. Set init value to 1, increment as needed. ¡¡¡¡oDataColumn = New DataColumn ¡¡¡¡oDataColumn.ColumnName = "ID" ¡¡¡¡oDataColumn.DataType = _ ¡¡¡¡System.Type.GetType("System.Int32") ¡¡¡¡oDataColumn.AutoIncrement = True ¡¡¡¡oDataColumn.AutoIncrementSeed = 1 ¡¡¡¡oEmployeeDT.Columns.Add (oDataColumn) ¡¡¡¡'PK property receives array of DataColumn objects in ¡¡¡¡'case you have multi-col index. I prefer an ID column. ¡¡¡¡aPrimaryKey(0) = oDataColumn ¡¡¡¡oEmployeeDT.PrimaryKey = aPrimaryKey ¡¡¡¡'Create the individual data columns ¡¡¡¡a€| ¡¡¡¡oDataColumn = New DataColumn ¡¡¡¡oDataColumn.ColumnName = "Salary" ¡¡¡¡oDataColumn.DataType = _ ¡¡¡¡System.Type.GetType("System.Decimal") ¡¡¡¡oEmployeeDT.Columns.Add (oDataColumn) ¡¡¡¡'Here we use DataColumn's Expression property to show ¡¡¡¡'what a 28% tax on the salary will amount to. ¡¡¡¡oDataColumn = New DataColumn ¡¡¡¡oDataColumn.ColumnName = "IncomeTax" ¡¡¡¡oDataColumn.DataType = _ ¡¡¡¡System.Type.GetType("System.Decimal") ¡¡¡¡oDataColumn.Expression = "Salary * .28" ¡¡¡¡oEmployeeDT.Columns.Add (oDataColumn) ¡¡¡¡oDataColumn = New DataColumn ¡¡¡¡oDataColumn.ColumnName = "HireDate" ¡¡¡¡oDataColumn.DataType = _ ¡¡¡¡System.Type.GetType("System.DateTime") ¡¡¡¡oEmployeeDT.Columns.Add (oDataColumn) ¡¡¡¡'This col receives the value calc'd by event handler ¡¡¡¡oDataColumn = New DataColumn ¡¡¡¡oDataColumn.ColumnName = "DaysSinceHire" ¡¡¡¡oDataColumn.DataType = _ ¡¡¡¡System.Type.GetType("System.Int16") ¡¡¡¡oEmployeeDT.Columns.Add (oDataColumn) ¡¡¡¡'Once the columns are added, add sample data ¡¡¡¡oDataRow = oEmployeeDT.NewRow() ¡¡¡¡oDataRow("LastName") = "Washington" ¡¡¡¡oDataRow("FirstName") = "George" ¡¡¡¡oDataRow("Salary") = 45000 ¡¡¡¡oDataRow("IncomeTax") = True ¡¡¡¡oDataRow("HireDate") = "4/12/1981" ¡¡¡¡oEmployeeDT.Rows.Add (oDataRow) ¡¡¡¡a€| ¡¡¡¡'Commit new data to the DataTable object and set ¡¡¡¡'RowState values of each row to Unchanged ¡¡¡¡oEmployeeDT.AcceptChanges() ¡¡¡¡'Let's show the user ¡¡¡¡DataGrid1.DataSource = oEmployeeDT ¡¡¡¡ ¡¡¡¡ÔÚʵÀý»¯ DataTable ¶ÔÏóÖ®ºó£¬Äú¾Í¿ÉÒÔʹÓÃÕâ¸öʼþÄ£Ðͽ«Ê¼þ´¦Àí³ÌÐò¡°DataColumnChangeEventHandler¡±ÉèÖÃΪ×Ô¶¨ÒåÀý³Ì¡£Í¨¹ý´«µÝ ColumnChanged Àý³ÌµÄµØÖ·£¬Ö»ÒªÒ»¸öÁÐÖеÄÊý¾Ý¸ü¸Ä£¬Äú¾Í¿ÉÒÔÖ´ÐÐÕâ¸ö´¦Àí³ÌÐò¡£ÔÚ±¾ÀýÖУ¬ÎÒÃÇҪʹÓÃËüÀ´È·¶¨Ö°Ô±±»¹ÍÓ¶ÒÔÀ´µÄÌìÊý£¨Çë²Î¼ûÇåµ¥ 5£©¡£ ¡¡¡¡ ¡¡¡¡Çåµ¥ 5. ColumnChanged ʼþ´¦Àí³ÌÐò¡£ ¡¡¡¡ ¡¡¡¡Sub ColumnChanged(ByVal sender As Object, _ ¡¡¡¡ByVal e As DataColumnChangeEventArgs) ¡¡¡¡If e.Column.ColumnName = "HireDate" Then ¡¡¡¡e.Row("DaysSinceHire") = _ ¡¡¡¡DateDiff(DateInterval.Day, ÉÏÒ»Ò³ [1] [2] [3] ÏÂÒ»Ò³
|