0

我尝试从 XtraReport 的行(点击的位置)中获取所有值。
我不知道为什么,但 xrTableRow1_PreviewClick 和 xrTable1_PreviewClick 不起作用。
仅适用于 xrTableCell4_PreviewClick。通过'e.Brick.Text',我只能在单元格中获得价值。

private void xrTableCell1_PreviewClick(object sender, PreviewMouseEventArgs e)
{
  var tmp = e.Brick.Text;
}

如果我尝试:

GetCurrentRow()

它只给出第一行。这不是我需要的。)

如何从单击的行中获取所有值?或者我如何获得点击所在的行索引?
我的报告在设计器中看起来像:
在此处输入图像描述

提前致谢!

4

2 回答 2

5

没有简单的方法可以使用砖块方法访问相应的数据行。当所有需要的砖都生成时,报告不再引用数据源。换句话说,砖现在确实知道底层数据。它们只包含文本、图像或其他控件。

完成此任务的最简单方法是处理 XRControl 的 BeforePrint 事件并将相应的数据对象(DataRowView 或自定义对象)传递给 XRControl 的 Tag 属性:

private void xrLabel_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) {
    // Obtain the current label.
    XRLabel label = (XRLabel)sender;

    //Obtain the parent Report
    XtraReportBase parentReport = label.Report;

    //Get the data object
    object currentData = parentReport.GetCurrentRow();

    //Pass this object to Tag
    label.Tag = currentData;
}

之后,可以通过 PreviewClick 事件处理程序中的 e.Brick.Value 属性访问数据对象。

于 2013-11-14T09:49:12.577 回答
1

VB.net 代码在预览模式下捕获明细库中任何字段的值。

Dim myo As Object
dim myacct as long

For i = 0 To e.Brick.Parent.Bricks.Count
Try
    myo = e.Brick.Parent.Bricks.Item(i) ' cant get name w/o this ???
    If myo.brickowner.name = "XrLabel14" Then  ' test for desired label
        myacct = myo.text   'capture the value
         Exit For
    End If
 Catch oerr As Exception
    'log error here
 End Try

Next
于 2015-03-19T20:10:32.550 回答