【问题标题】:C# how to get the detail gridView2 (master-Detail) FocusedColumn.FieldName? (Programmatically)C#如何获取详细gridView2(master-Detail)FocusedColumn.FieldName? (以编程方式)
【发布时间】:2016-10-01 04:44:38
【问题描述】:

我设法创建了主从细节,如附件图片所示。 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列名称和值的代码,我的代码如下

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

不幸的是,它出现了我无法解决的错误。只要我不单击其他主部分单元格,它就可以工作。将弹出错误对象消息;一旦我单击主部分的其他单元格,然后我返回单击我以前的详细信息单元格。

【问题讨论】:

    标签: c# gridview devexpress


    【解决方案1】:

    正如Detail Pattern and Clone Views 文章中解释的那样:

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

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

    要使用特定视图,您需要获取 Pattern 视图的相应克隆。有几种方法可以获得它。

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

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

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

    【讨论】:

    • 仍然不清楚建议,这是我的示例代码想法来自stackoverflow.duapp.com/questions/28096968/… 不幸的是部分工作,我需要图主详细链接可能会错过导致问题,或需要重新编码
    • 原因会出现问题,因为gridView1.FocusedRowHandle发生了变化,我需要在点击任何行详细信息单元格时找到一个代码,它可以详细说明它在哪个行主控下。跨度>
    【解决方案2】:

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

     GridView detailView = sender as GridView;
     GridView gv = (GridView)gridView1.GetDetailView(detailView.SourceRowHandle, 0);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-24
      • 2018-12-29
      • 2022-01-12
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多