Table into DataSet and Control DataTable(转)
2009-11-01 21:48
405 查看
private void DemonstrateMergeMissingSchema() { // Create a DataSet with one table, two columns, // and three rows. DataSet dataSet = new DataSet("dataSet"); DataTable table = new DataTable("Items"); DataColumn idColumn = new DataColumn("id", Type.GetType("System.Int32")); idColumn.AutoIncrement=true; DataColumn itemColumn = new DataColumn("Item", Type.GetType("System.Int32")); // DataColumn array to set primary key. DataColumn[] keyColumn= new DataColumn[1]; DataRow row; // Create variable for temporary DataSet. DataSet changeDataSet; // Add RowChanged event handler for the table. table.RowChanged+= new DataRowChangeEventHandler( Row_Changed); dataSet.Tables.Add(table); table.Columns.Add(idColumn); table.Columns.Add(itemColumn); // Set primary key column. keyColumn[0]= idColumn; table.PrimaryKey=keyColumn; // Add ten rows. for(int i = 0; i <10;i++) { row=table.NewRow(); row["Item"]= i; table.Rows.Add(row); } // Accept changes. dataSet.AcceptChanges(); DataGrid2.DataSource=dataSet; DataGrid2.DataBind(); //PrintValues(dataSet, "Original values"); // Change row values. table.Rows[0]["Item"]= 50; table.Rows[1]["Item"]= 111; // Add one row. row=table.NewRow(); row["Item"]=74; table.Rows.Add(row); // Insert code for error checking. Set one row in error. table.Rows[1].RowError= "over 100"; //PrintValues(dataSet, "Modified and New Values"); // If the table has changes or errors, create a subset DataSet. if(dataSet.HasChanges(DataRowState.Modified | DataRowState.Added)& dataSet.HasErrors) { // Use GetChanges to extract subset. changeDataSet = dataSet.GetChanges( DataRowState.Modified|DataRowState.Added); //PrintValues(changeDataSet, "Subset values"); // Insert code to reconcile errors. Reject the changes. foreach(DataTable changeTable in changeDataSet.Tables) { if (changeTable.HasErrors) { foreach(DataRow changeRow in changeTable.Rows) { //Console.WriteLine(changeRow["Item"]); if((int)changeRow["Item", DataRowVersion.Current ]> 100) { changeRow.RejectChanges(); changeRow.ClearErrors(); } } } } // Add a column to the changeDataSet to change the schema. changeDataSet.Tables["Items"].Columns.Add( new DataColumn("newColumn")); //PrintValues(changeDataSet, "Reconciled subset values"); // Add values to the rows for each column. foreach(DataRow rowItem in changeDataSet.Tables["Items"].Rows) { rowItem["newColumn"] = "my new schema value"; } DataGrid2.DataSource=dataSet; DataGrid2.DataBind(); DataGrid3.DataSource=changeDataSet; DataGrid3.DataBind(); // Merge changes back to first DataSet. dataSet.Merge(changeDataSet, false, System.Data.MissingSchemaAction.Add); } //PrintValues(dataSet, "Merged Values"); DataGrid1.DataSource=dataSet; DataGrid1.DataBind(); } private void Row_Changed(object sender, DataRowChangeEventArgs e) { Console.WriteLine("Row Changed " + e.Action.ToString() + "/table" + e.Row.ItemArray[0]); } private void PrintValues(DataSet dataSet, string label) { Console.WriteLine("/n" + label); foreach(DataTable table in dataSet.Tables) { Console.WriteLine("TableName: " + table.TableName); foreach(DataRow row in table.Rows) { foreach(DataColumn column in table.Columns) { Console.Write("/table " + row[column] ); } Console.WriteLine(); } } } id Item 0 50 1 111 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 74 id Item newColumn 0 50 my new schema value 1 1 my new schema value 10 74 my new schema value id Item newColumn 0 50 my new schema value 1 1 my new schema value 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 74 my new schema value
相关文章推荐
- Table into DataSet and Control DataTable
- Read SQL Table into C# DataTable
- CreateDataCloumnAddDataTable&amp;&amp;CreateDataTableAddDataSet
- csharp: Export DataSet into Excel and import all the Excel sheets to DataSet
- DSNUTILB UNLOAD DB2 TABLE INTO DATASET
- DataTable into DataSet
- Insert data into a table using table variables and cross join
- csharp: Export DataSet into Excel and import all the Excel sheets to DataSet
- trailing nulcols:difference between external table and sqlldr:create external table from controlfile
- ADO.NET对象之DataSetAndDataTable操作
- DataSet导入到Excel里,多个DataTable分成多个Sheet,Sheet以TableName命名
- 把datatable排序,并保存到dataset.table[0] 中:
- Carrying filename and request_id into table when doing sqlldr
- transfer xml data into dataset and bind into gridview
- DataTable and DataSet
- How to: Span Rows and Columns in a TableLayoutPanel Control
- Note---Data Contract:DataTable,DataSet,Generic and Collection
- Introduction to Tablespaces, Datafiles, and Control Files【每日一译】--2012-10-28
- DataTable into DataSet
- OleDbDataAdaper.Update(DataSet ds,TableName name) 总是报"Insert Into 的语句语法错误".