GridControl主从表结构如何操作从表数据
今天同事咨询我GridControl主从表结构中的从表如何取到值,试了很久获取到的值一直是null,恰好博主前几年刚好有用过这个功能,故顺利解决了同事的问题,下面就贴上代码。
第一步,需要定义一个变量
/// <summary>
/// 由于明细表只有在运行时可见,所以我们要设定一个明细表以便获取明细表数据
/// </summary>
private GridView DetailView = new GridView();
第二步,最为关键的步骤
/// <summary>
/// 获取从表的当前选择行的某一列(如ID列)
/// 这个时候再使用获取主表当前选择行的某一列的方法是不行的,因为所得到的SeletedRowsCount=0。
/// 使用如下方法得到:
/// 在MASTER表的展开事件中得到detail有的View.然后就可以利用它了
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gvLeft_MasterRowExpanded(object sender, CustomMasterRowEventArgs e)
{
// 将明细的数据赋值DetailView中
this.DetailView = this.gvLeft.GetDetailView(e.RowHandle, e.RelationIndex) as GridView;
this.DetailView.HorzScrollStep = this.DetailView.RowCount;
}
第三步,操作方法与主表一致,比如:
private void gvPluLeft_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
{
var model = this.DetailView.GetRow(e.FocusedRowHandle) as HQSKUPRICELEFT;
if (model == null) { return; }
/***********此处加需要的代码************/
}