[ADO.NET] 如何使用 DataView 物件(一) / 搜尋 過濾 資料

[ADO.NET] 如何使用 DataView 物件(一) / 搜尋 單一條件 資料

1.DataView 是用來展現DataTable的物件,你可以將 DataView 想成是一張經過條件定義好的檢視表。

DataView myDataView = new DataView(myDataTable);
快照-2009101861644 

2.一個 DataTable 可以有很多不同條件的 DataView。(也就是可以有不同的定義)

3.DataViewRowFilter 屬性用來過濾資料用,使用語法類型SQL中的Where。

myDataView.RowFilter = "EmployeeID<" + textBox2.Text;

4.DataViewSort 屬性用來控制資料的排序方式,降冪用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;








System.Data.SqlClient

 

取得北風資料庫中的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

CS_UseDataView.rar

快照-200910189852

續下篇

[ADO.NET] 如何使用 DataView 物件(二) / 新增 編輯 刪除 資料

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo