DataView myDataView = new DataView(myDataTable);
myDataView.RowFilter = "EmployeeID<" + textBox2.Text;
//昇冪
myDataView.Sort = textBox5.Text + " DESC";
//昇冪
myDataView.Sort = textBox6.Text + " ASC";
5.DataView 的 Find 方法用來搜尋資料,使用 Find 時必須先指定 Sort,Find 方法會傳回整數,若為-1表示找不到資料。
用Find找到的資料,會回傳一個整數,找到的資料用以下方式表示:
myDataView[i]["LastName"].ToString();
6.DataView 的 ApplyDefaultSort 屬性決定使用預設方式排序,若設為true則表示衣主鍵排序。
//定義Primary Key
myDataTable.PrimaryKey = new DataColumn[] { myDataTable.Columns[Convert.ToInt16(textBox1.Text)] };
//使用預設排序
myDataView.ApplyDefaultSort = true;
7.當 DataView 的屬性(Sort 、RowFilter)被修改了,就必須要再重新建立 DataView。
8.在開始以下範例時,必須先引用以下兩個命名空間
System.Data
private void Form1_Load(object sender, EventArgs e)
{
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;
}
}
}
}
}
如何使用主鍵排序
//依Primary Key排序
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篩選
//使用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;
}
如何使用Sort排序
//昇冪
myDataView.Sort = textBox5.Text + " DESC";
this.dataGridView1.DataSource = myDataView;
//昇冪
myDataView.Sort = textBox6.Text + " ASC";
this.dataGridView1.DataSource = myDataView;
如何使用Find方法找資料
myDataView = new DataView(myDataTable);
//使用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
*******************************************************************************************************************************
使用DataView的方式做Distinct的方法
因需從某一個Table中找到distinct的資料.可是其資料已抓至DataTable中,又不想再從DB中抓一次相同的資料,故找了大神的幫忙才得知此方法.
這個方法是.NET Framework 2.0版的新功能
根據現有DataView中的資料列,建立並傳回新的DataTable
語法:
DataView.ToTable(bool distinct, params string[] columnNames)
參數
distinct
如果是 true, 則傳回DataTable會包含在所有資料中具有相異值的資料列,default : false。
columnNames
字串陣列,包含要加入傳回的DataTable中資料行名稱之清單。DataTable會包含指定之資料行,且其順序是根據出現在這個陣列中的順序。
傳回值
新的DataTable執行個體,其中包含所要求的資料列和資料行。
Example :
DataTable table = sourceTable.DefaultView.ToTable(true, "Column1", "Column2");
Console.WriteLine("Distinct Column1, Column2 total count : " + table.rows.count.ToString());
這個方法是.NET Framework 2.0版的新功能
根據現有DataView中的資料列,建立並傳回新的DataTable
語法:
DataView.ToTable(bool distinct, params string[] columnNames)
參數
distinct
如果是 true, 則傳回DataTable會包含在所有資料中具有相異值的資料列,default : false。
columnNames
字串陣列,包含要加入傳回的DataTable中資料行名稱之清單。DataTable會包含指定之資料行,且其順序是根據出現在這個陣列中的順序。
傳回值
新的DataTable執行個體,其中包含所要求的資料列和資料行。
Example :
DataTable table = sourceTable.DefaultView.ToTable(true, "Column1", "Column2");
Console.WriteLine("Distinct Column1, Column2 total count : " + table.rows.count.ToString());
沒有留言:
張貼留言