我设法创建主要细节,在附件图像上显示。 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);
不幸的是它得到了我无法解决的错误。它工作,但我没有点击其他主节细胞。将弹出错误对象消息;一旦我点击主控部分的其他单元格,我就回去点击我之前的细节单元格。
答案 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"];