自定義DataSet
1.建立DataSet對象
2.建立DataTable對象
3.建立DataColumn對象建構表結構
4.将建立好的表結構添加到表中
5.建立DataRow對象新增資料
6.将資料插入到表中
7.将表添加到DataSet中
示例:
//建立一個新的空班級DataSet
DataSet dsClass = new DataSet();
//建立班級表
DataTable dtClass = new DataTable("Class");
//建立班級名稱列
DataColumn dcClassName = new DataColumn("ClassName",typeof(string));
className.MaxLength = 50;
//建立年級ID列
DataColumn dcGradeID = new DataColumn("GradeID",typeof(int));
//将定義好列添加到班級表中
dtClass.Columns.Add(dcClassName);
dtClass.Columns.Add(dcGradeID);
//建立一個新的資料行
DataRow drClass = dtClass.NewRow();
drClass["className"] = this.txtClassName.Text.Trim();
drClass["gradeID"] = objGrade.GetGradeIDByGradeName(this.cboGrade.Text.Trim());
//将新的資料行插入班級表中
dtClass.Rows.Add(drClass);
//将班級表添加到DataSet中
dsClass.Tables.Add(dtClass);
如何擷取DataSet中的資料
從DataSet中擷取資料有兩種方式:
1.第一種方式是通過指定DataSet中的具體DataTable的某行某列來擷取資料。
步驟:
1.通過表名,從DataSet中擷取指定的DataTable
2.通過索引,從DataTable中擷取指定的DataRow
3.通過列名,從DataRow中擷取指定列的資料
例:
//得到班級名稱
dsClass.Table["Class"].Row[0]["ClassName"];
//得到年級ID
dsClass.Tables["Class"].Row[0]["GradeID"]
2.另一種方式是将DataSet中的資料直接綁定到資料展示控件上。
我們一般都需要對從DataSet中提取出來的資料做一些簡單的修飾,如隐藏特定列,按照某列排序。其實很簡單,.net為我們提供了一個DataView對象,它可以像資料庫中的視圖一樣幫助我們建立DataSet中資料對應的不同視圖。(一個DataTable可以動态生成多個DataView)
DataView
DataView為我們提供DataTable的動态視圖,并可以對動态生成的視圖中的資料進行排序、笪選等操作,它與資料庫中的視圖類似,唯一不同的是它無法提供關聯DataTable的視圖,它不能排除原表中存在的列,也不能向原表中追加不存在的列
示例:
//過濾掉使用者狀态為非活動的學員
//對過過濾後的學員資訊以學員名稱降序排序
DataSet dsStudent = new DataSet();
DataView dvStudent = new DataView();
dvStudent.Table = dsStudent.Tables["studentTable"];
dvStudent.RowFilter = "UserState = '活動'";
dvStudent.Sort = "StudentName DESC";
DataView幾個常用的屬性:
Table 用于擷取或設定源DataTable
Sort 擷取或設定DataView的一個或多個排序列以及排序順序
RowFilter 擷取或設定用于篩選在DataView中檢視哪些行的表達式
Count 在應用RowFilter後,擷取DataView中的行數
經驗:
在開發中如果需要對DataGrigView展示的資料進行動态篩選或排序時,我們最好使用DataTable的DefaultView(預設視圖)屬性來得到DataTable的視圖,這樣我們就可以減少執行個體化DataView對象的步驟,以及擷取DataView對象原DataTable的過程。
DataTable dtStudent = (DataTable)dataGridView.DataSource;
dtStudent.Tables["studentTable"].DefaultView.RowFilter = "UserState='活動'";
版權聲明:本文為CSDN部落客「weixin_33716941」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/weixin_33716941/article/details/92031745