[ADO.NET] 如何使用 DataView 物件(一) / 搜尋 單一條件 資料
1.DataView 是用來展現DataTable的物件,你可以將 DataView 想成是一張經過條件定義好的檢視表。
DataView myDataView = new DataView(myDataTable);
2.一個 DataTable 可以有很多不同條件的 DataView。(也就是可以有不同的定義)
3.DataView 的 RowFilter 屬性用來過濾資料用,使用語法類型SQL中的Where。
myDataView.RowFilter = "EmployeeID<" + textBox2.Text;
4.DataView 的 Sort 屬性用來控制資料的排序方式,降冪用DESC;昇羃用ASC,使用語法類似SQL中的Order By。
//昇冪
myDataView.Sort = textBox5.Text + " DESC";
//昇冪
myDataView.Sort = textBox6.Text + " ASC";
myDataView[i]["LastName"].ToString();
//定義Primary Key
myDataTable.PrimaryKey = new DataColumn[] { myDataTable.Columns[Convert.ToInt16(textBox1.Text)] };
//使用預設排序
myDataView.ApplyDefaultSort = true;
取得北風資料庫中的Employees資料表,並建立一個DataTable,myDataTable就是我的 DataTable。
{
cs = "Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True";
qs = "SELECT * FROM Employees";
//資料庫連結,建立DataTable
using (SqlConnection cn = new SqlConnection(cs))
{
cn.Open();
using (SqlCommand cmd = new SqlCommand(qs, cn))
{
using (SqlDataReader dr = cmd.ExecuteReader())
{
using (DataTable dt = new DataTable())
{
dt.Load(dr);
myDataTable = dt;
}
}
}
}
}
private void button1_Click(object sender, EventArgs e)
{
//1.定義DataView
myDataView = new DataView(myDataTable);
//2.定義Primary Key
myDataTable.PrimaryKey = new DataColumn[] { myDataTable.Columns[Convert.ToInt16(textBox1.Text)] };
//3.使用預設排序
myDataView.ApplyDefaultSort = true;
this.dataGridView1.DataSource = myDataView;
}
如何使用使用RowFilter篩選
private void button2_Click(object sender, EventArgs e)
{
//1.定義DataView
myDataView = new DataView(myDataTable);
//2.過濾數字
myDataView.RowFilter = "EmployeeID<" + textBox2.Text;
this.dataGridView1.DataSource = myDataView;
}
private void button3_Click(object sender, EventArgs e)
{
//1.定義DataView
myDataView = new DataView(myDataTable);
//2.過濾字串需用''
myDataView.RowFilter = "LastName='" + this.textBox3.Text + "'";
this.dataGridView1.DataSource = myDataView;
}
private void button4_Click(object sender, EventArgs e)
{
//1.定義DataView
myDataView = new DataView(myDataTable);
//2.找出字首以D開頭的
myDataView.RowFilter = "LastName like '" + textBox4.Text + "%'";
this.dataGridView1.DataSource = myDataView;
}
myDataView.Sort = textBox5.Text + " DESC";
this.dataGridView1.DataSource = myDataView;
//昇冪
myDataView.Sort = textBox6.Text + " ASC";
this.dataGridView1.DataSource = myDataView;
如何使用Find方法找資料
//使用Find必須先指定Sort為DataTable欄位
myDataView.Sort = textBox7.Text;
//Find方法會傳回整數,若為-1表示找不到資料
int i = myDataView.Find(textBox8.Text);
if (i == -1)
{
MessageBox.Show(textBox7.Text + "欄位" + " , " + "找不到 " + textBox8.Text + " 資料");
}
else
{
//將找到的資料傳到DataTable中,以下是手動建立DataTable的步驟
DataTable dt = new DataTable();
//1.手動建立欄位,抄別人的比較快 ^.^!
foreach (DataColumn item in myDataTable.Columns)
{
dt.Columns.Add(item.ToString());
}
DataRow dr = dt.NewRow();
//2.手動建立已搜尋到的資料(再抄一次欄位 :P)
foreach (DataColumn item in myDataTable.Columns)
{
dr[item.ToString()] = myDataView[i][item.ToString()].ToString();
}
dt.Rows.Add(dr);
this.dataGridView1.DataSource = dt;
}
範例下載
VB_UseDataView.rar
續下篇
[ADO.NET] 如何使用 DataView 物件(二) / 新增 編輯 刪除 資料
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET