功能:雙擊AA表數據列表中數據能找到已經導入到BB系統中的對應記錄,同樣雙擊BB系統中的記錄,自動找到AA表中對應的數據。(兩個表是由xtraTabControl實現的)
代碼: private void gridView_jk_DoubleClick(object sender, EventArgs e) { if (ds_jk.Tables[0].Rows.Count == 0) { MessageBox.Show("表中沒有數據,無法對應!"); } else { //在獲取雙擊行的某列值之前,不能刷新gridview(也就是往gridview上綁定數據),假如在這個注釋位置綁定數據,會出現不管你雙擊表AA的哪一列,獲取的列值都是第一列。因為綁定數據後,默認選中第一行。 //string str_ci = CurrentRow["GridControl上列綁定數據庫中的列名aa"].ToString(); //上下兩句話作用一樣 string str_ci = gridView_jk.GetRowCellValue(gridView_jk.FocusedRowHandle, "GridControl中列綁定數據庫中的列名aa").ToString(); //xtraTabControl1.SelectedTabPageIndex = 1;是由左側的表跳轉到右側 //xtraTabControl1.SelectedTabPageIndex = 0;是由右側的表跳轉到左側 xtraTabControl1.SelectedTabPageIndex = 1; string str = "select * from 某表"; DataSet ds = 某函數.ExecSQL(str); gridControl_zj.DataSource = ds.Tables[0].DefaultView; int j = -1;//用來記錄行號 foreach (DataRow dr in ds.Tables[0].Rows) { j = j + 1; if (str_ci == dr["右側表中要與左側表用來對應的列"].ToString()) { //gridView_zj.FocusedRowHandle = j;j是要獲取行的行號,gridview的行號從0開始,j=1,對應到右邊的表後,就會將第2行選出 gridView_zj.FocusedRowHandle = j; break; } } } } public DataRow CurrentRow { get { return this.gridView_jk.GetDataRow(gridView_jk.FocusedRowHandle); } } 小注:如果此時不做任何設置,只有雙擊表頭的時候才會跳轉。 解決辦法:將gridview的Views選項中的OptionBehavior中的editable設置為false(此時選擇框是不能用的)或者將Columns中的Column Options選項中的AllowFocus設置為false(需要每一列都進行設置)