C# Devexpress从gridview子级获取值
我使用此代码生成数据并将其输出到gridview中C# Devexpress从gridview子级获取值,c#,winforms,devexpress,devexpress-windows-ui,C#,Winforms,Devexpress,Devexpress Windows Ui,我使用此代码生成数据并将其输出到gridview中 string sql = "Sql Query"; string sqlCredit= "Sql Query"; string sqlCreditPayment = "Sql Query"; SqlDataAdapter da = new SqlDataAdapter(); DataSet ds = new DataSet(); ds.EnforceConstraints = false; ds.DataSetN
string sql = "Sql Query";
string sqlCredit= "Sql Query";
string sqlCreditPayment = "Sql Query";
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
ds.EnforceConstraints = false;
ds.DataSetName = "Receivables";
ds.Tables.Add((con.ShowResult(sql, ref da)).Tables[0].Copy());
ds.Tables[0].TableName = "dtReceivables";
ds.Tables.Add((con.ShowResult(sqlCredit, ref da)).Tables[0].Copy());
ds.Tables[1].TableName = "dtCredit";
ds.Tables[1].Columns[1].ColumnMapping = MappingType.Hidden;
ds.Tables[1].Columns[7].ColumnMapping = MappingType.Hidden;
ds.Tables.Add((con.ShowResult(sqlCreditPayment, ref da)).Tables[0].Copy());
ds.Tables[2].TableName = "dtCreditPayment";
ds.Tables[2].Columns[0].ColumnMapping = MappingType.Hidden;
DataRelation dr0 = new DataRelation("CreditList", ds.Tables[0].Columns["Id"], ds.Tables[1].Columns["DocSupplierId"]);
ds.Relations.Add(dr0);
DataRelation dr1 = new DataRelation("CreditPaymentList", ds.Tables[1].Columns["Id"], ds.Tables[2].Columns["SourceId"]);
ds.Relations.Add(dr1);
slipDashBoard.DataSource = ds.Tables["dtReceivables"];
slipDashBoard.ForceInitialize();
gridView1.BestFitColumns();
伙计们。请帮忙。当我点击gridview的子对象时,我想实现这样的效果。提前通知
本例的主要思想是获取已单击的GridView类的实例。XtraGrid创建在设计时创建的图案视图的克隆,并使用这些克隆显示数据。以下是应该起作用的代码:
GridView gridView = sender as GridView;
var value = gridView.GetRowCellValue(gridView.FocusedRowHandle, gridView.Columns["Num"));
MessageBox.Show(value.ToString());
由于子GridView是自动创建的,因此有两种方法:
1) 处理GridControl的Click事件处理程序:
private void gridControl1_Click(object sender, EventArgs e) {
GridControl grid = sender as GridControl;
Point p = new Point(((MouseEventArgs)e).X, ((MouseEventArgs)e).Y);
GridView gridView = grid.GetViewAt(p) as GridView;
if(gridView != null)
MessageBox.Show(gridView.GetFocusedRowCellDisplayText("Num"));
}
private void gridView1_MasterRowExpanded(object sender, CustomMasterRowEventArgs e) {
GridView master = sender as GridView;
GridView detail = master.GetDetailView(e.RowHandle, e.RelationIndex) as GridView;
detail.Click += new EventHandler(detail_Click);
}
void detail_Click(object sender, EventArgs e) {
GridView gridView = sender as GridView;
var value = gridView.GetRowCellValue(gridView.FocusedRowHandle, gridView.Columns["Num"));
MessageBox.Show(value.ToString());
}
2) 处理GridView1 MasterRowExpanded事件处理程序:
private void gridControl1_Click(object sender, EventArgs e) {
GridControl grid = sender as GridControl;
Point p = new Point(((MouseEventArgs)e).X, ((MouseEventArgs)e).Y);
GridView gridView = grid.GetViewAt(p) as GridView;
if(gridView != null)
MessageBox.Show(gridView.GetFocusedRowCellDisplayText("Num"));
}
private void gridView1_MasterRowExpanded(object sender, CustomMasterRowEventArgs e) {
GridView master = sender as GridView;
GridView detail = master.GetDetailView(e.RowHandle, e.RelationIndex) as GridView;
detail.Click += new EventHandler(detail_Click);
}
void detail_Click(object sender, EventArgs e) {
GridView gridView = sender as GridView;
var value = gridView.GetRowCellValue(gridView.FocusedRowHandle, gridView.Columns["Num"));
MessageBox.Show(value.ToString());
}
如果在运行时创建网格,则会有一个类似gridview2的实例。现在,您可以使用
gridview2.click+=neweventhandler(gridview2\u-click)添加click事件代码>
然后你会得到这样的东西:
void view_Click(object sender, EventArgs e)
{
//take the code from platons post...
}
我应该在哪里添加此代码?gridView 1\u单击仅在父gridView上触发。我的子gridview是在运行时创建的。