適合數據源爲Binding的DataGrid,基本思路爲:
1. 新建一個DataTable,對數據源每個row進行檢索
2. 把符合條件的row信息加到新建的DataTable中
3. 將新建的DataTable作爲DataGrid的數據源
private void SearchPicker_TextChanged_1(object sender, TextChangedEventArgs e)
{
String strQuery = this.SearchPicker.Text;
DataGrid dg=this.ContactList;
DataTable dtTmp = new DataTable();
for (int c = 0; c<dg.Columns.Count; c++)
{
dtTmp.Columns.Add(dg.Columns[c].Header.ToString(), typeof(String));
}
for (int i = 0; i < dtContact.Rows.Count; i++ )
{
for (int j = 0; j<dtContact.Columns.Count; j++)
{
if (dtContact.Rows[i][dg.Columns[j].Header.ToString()].ToString().ToLower().Contains(strQuery.ToLower()))
{
DataRow dr = dtTmp.NewRow();
//DataRow dr = new DataRow();
for (int c = 0; c < dtContact.Columns.Count; c++)
{
dr[dg.Columns[c].Header.ToString()] = dtContact.Rows[i][dg.Columns[c].Header.ToString()];
}
dtTmp.Rows.Add(dr);
break;
}
}
}
this.ContactList.ItemsSource = dtTmp.DefaultView;
}