一:Clone返回新的 DataTable
Clone返回新的 DataTable,與當前的 DataTable 具有相同的架構;Copy:返回新的 DataTable,它具有與該 DataTable 相同的結構(表架構和約束)和數據
DataRow[] _dr = DT.Select("CLSSBH='"+ Filter_Str +"'");
DataTable dt = DT.Clone() ;
DataRow dr ;
for( int j = 0 ;j < _dr.Length ;j ++ )
{
dr = dt.NewRow() ;
dr = _dr[j] ;
dt.ImportRow( dr ) ;
}
一般使用DataTable.Rows.Add(row.ItemArray);
二:選中某一行
GridView.FocusedRowHandle =i;
GridView.SelectRow(i);
三:遍歷GridView
for (int i = 0; i < gridView1.RowCount; i++)
{
for (int j = 0; j < gridView1.Columns.Count; j++)
{
object val = gridView1.GetRowCellValue(i, gridView1.Columns[j]);
}
}
四:單元格雙擊響應
需要先將gridview1.OptionsBehavior.Editable設為false,然后響應gridControl1_DoubleClick事件。
private void gridControl1_DoubleClick(object sender, EventArgs e)
{
MouseEventArgs arg = e as MouseEventArgs;
if (arg == null)
return;
GridHitInfo hitInfo = gridView1.CalcHitInfo(new Point(arg.X, arg.Y));//獲取坐標點
if (hitInfo.RowHandle >= 0)
{
DataRow row = gridView1.GetDataRow(hitInfo.RowHandle);
_list.Clear();
_list.Add(row[0].ToString());
gisResoureMonControl1.SetSelectResource(_list);
}
}
五:GridView隱藏行
需要響應CustomRowFilter事件,用來設置過濾條件;
需要根據原始數據源結合起來,才能方便地隱藏或者顯示行;
/// <summary>
/// 根據條件查詢並在表格中顯示結果
/// </summary>
/// <param name="strCondition"></param>
private void QueryTable(string strCondition)
{
DataTable table = gridControl1.DataSource as DataTable;
if (table == null)
return;
_indexlist.Clear();
for (int i = 0; i < table.Rows.Count; i++)
{
for (int j = 0; j < table.Columns.Count; j++)
{
if(table.Rows[i][j].ToString().Contains(strCondition))
{
_indexlist.Add(i);
gridView1.RefreshData();
break;
}
}
}
if (_indexlist.Count==0)
HideGridView();
}
/// <summary>
/// gridView的行隱藏或顯示的過濾條件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gridView1_CustomRowFilter(object sender, RowFilterEventArgs e)
{
if (_indexlist.Count == 0)
return;
if(_indexlist.Contains(-2))
e.Visible = true; //全顯示
else if (_indexlist.Contains(-3))
e.Visible = false; //全隱藏
else if(_indexlist.Contains(e.ListSourceRow))
e.Visible = true;
else
e.Visible = false;
e.Handled = true;
}