C#如何获取详细信息gridView2(master-Detail)FocusedColumn.FieldName? (编程)

时间:2016-10-01 04:44:38

标签: c# gridview devexpress

我设法创建主要细节,在附件图像上显示。 gridControl1包含2个网格视图,MainView:gridView1(主表:数据表名:tableSalesOrder)和InfoDetails(Level1):gridView2(详细信息表:数据表名:tableDetail)。

以下代码对于双击事件都是成功的。

 gridView1.DoubleClick += gridView1_DoubleClick;
 gridView2.DoubleClick += gridView2_DoubleClick;

我的问题: -

以下代码成功,因为我的gridView1.FocusedColumn.FieldName ==“ItemCode”。

    private void gridView1_DoubleClick(object sender, EventArgs e)
    {
        object obj;
        string code;
        if (gridView1.FocusedColumn.FieldName == "ItemCode")
        {
            obj = gridView1.GetFocusedRowCellValue("ItemCode");
            if (obj == null) return;
            code = obj.ToString();
            PromptItemForm(code);
        }
    }

但是当我尝试使用gridView2_DoubleClick(用于详细网格视图部分)时,我的gridView2.FocusedColumn.FieldName ==“DocNo”或gridView2.GetFocusedRowCellValue(“DocNo”)无法获取详细网格部分的值。它只保留显示ItemCode,如何在详细网格视图部分获取2以下程序的值?

  gridView2.FocusedColumn.FieldName == "DocNo"
  gridView2.GetFocusedRowCellValue("DocNo")

我整晚都谷歌仍然无法找到任何提示。需要主帮助。 谢谢,

数据集和数据表,我在代码

下面完成了链接
                 orderData.Tables.Add(tableSalesOrder);
                 orderData.Tables.Add(tableDetail);
                 orderData.Relations.Add("InfoDetails", tableSalesOrder.Columns["ItemCode"], tableDetail.Columns["ItemCode"]);
                 DataRelation orderRelation = orderData.Relations["InfoDetails"];
                 gridControl1.DataSource = tableSalesOrder;
                 gridControl1.ShowOnlyPredefinedDetails = false;

检查gridView2列名和值的代码,i代码如下

          GridView gridView2 = (GridView) gridView1.GetDetailView(gridView1.FocusedRowHandle, 0);

不幸的是它得到了我无法解决的错误。它工作,但我没有点击其他主节细胞。将弹出错误对象消息;一旦我点击主控部分的其他单元格,我就回去点击我之前的细节单元格。

enter image description here

2 个答案:

答案 0 :(得分:0)

正如Detail Pattern and Clone Views文章中所述:

  

详细信息运行时显示的视图是抽象详细信息视图的所有克隆,称为详细模式视图

在您的情况下,

gridView2是用户展开主行时创建的所有详细信息视图的Pattern视图。模式视图充当视图设置的存储库,不参与实际过程。

要处理特定视图,您需要获取模式视图的相应克隆。有几种方法可以获得它。

  • 如果您知道主行句柄和关系索引,则可以使用主视图的GetDetailView方法获取详细视图实例。

  • 您可以使用GridControl.FocusedView属性来引用当前在GridControl中关注的视图。这可以是主视图或详细视图,具体取决于用户放置焦点的位置。

  • 当您处理GridView事件时,引发事件的GridView实例将作为 sender 参数传递给事件处理程序。因此,您可以将发件人强制转换为GridView类型并使用它。

答案 1 :(得分:0)

我通过下面的谷歌代码解决了这个问题,但很少有修改以适应程序结构。

COMSVCSLib.AppServer aspServer = new COMSVCSLib.AppServer();
COMSVCSLib.ObjectContext oc = aspServer.GetObjectContext();
ASPTypeLibrary.Server server = (ASPTypeLibrary.Server)oc["Server"];