Telerik 报告:在运行时添加文本框不会显示

本文关键字:显示 文本 添加 报告 运行时 Telerik | 更新日期: 2023-09-27 17:57:18

我目前正在使用 Telerik 报告(2013 年第 1 季度发布)处理报告,并且我正在尝试在运行时将文本框添加到标题(最终也添加到详细信息部分),但问题是添加的文本框没有显示。 我不确定为什么它没有显示,但是添加后没有发生错误。 现在我正在尝试在itemdatabinding事件期间添加它。 我的代码如下:

public partial class _WellPlateReport : Telerik.Reporting.Report
{
  public _WellPlateReport(Dictionary<string, object> ReportParameters)
  {
    //
    // Required for telerik Reporting designer support
    //
    InitializeComponent();
    tbGenotype.Visible = false;
    //
    // TODO: Add any constructor code after InitializeComponent call
    //
  }
  private void labelsGroupHeaderSection_ItemDataBinding(object sender, EventArgs e)
  {
    string temp = "";
    Telerik.Reporting.Processing.GroupSection headerGroup = (Telerik.Reporting.Processing.GroupSection)sender;
    Telerik.Reporting.TextBox tb = new Telerik.Reporting.TextBox();
    tb.Left = new Telerik.Reporting.Drawing.Unit(0.5, UnitType.Inch) + tbGenotype.Left +   tbGenotype.Width;
    //tb.Width = new Telerik.Reporting.Drawing.Unit(3.0, UnitType.Inch);
    tb.Size = tbSex.Size;
    tb.Name = "TestLabel1";
    tb.Value = "Test Label";
    tb.Location = new Telerik.Reporting.Drawing.PointU(tbGenotype.Left + tbGenotype.Width + new Telerik.Reporting.Drawing.Unit(0.5, UnitType.Inch), Telerik.Reporting.Drawing.Unit.Inch(0D));
    //this.labelsGroupHeaderSection.Items.Add(tb);
    //this.Items.AddRange(new Telerik.Reporting.ReportItemBase[] { tb });
    this.labelsGroupHeaderSection.Items.AddRange(new Telerik.Reporting.ReportItemBase[] { tb });
  }
}

tbGenotype 是另一个文本框,新文本框将在运行时添加到旁边,所以我使用它的位置来放置动态文本框。 需要添加未知数量的附加列,但我不确定为什么这不起作用。 我的搜索显示其他人以类似的方式添加控件。

更新:另请注意,文本框 tbGenotype 是在 Visual Studio 的设计器中添加的。 尝试设置可见属性是有效的,但将文本框添加到标题则不行。

Telerik 报告:在运行时添加文本框不会显示

尝试查看此文档。我注意到的唯一区别是他们将文本框添加到面板。然后,他们将面板添加到报告中。检查是否将tbGenotype添加到面板中,但我认为您在报告中放置的每个元素都必须首先在同一面板中。

我有同样的问题,但我注意到当我使用报表查看器中的刷新按钮刷新报表时(在我的 Windows 应用程序中;对于 Web 版本应该相同),动态添加的控件会显示出来。当我第二次刷新时,将显示一组额外的(第二组)控件。

我的观察是这样的:在初始运行时,控件被添加,但不可见(无论可见属性值是否为真)。在第一次刷新(第二次服务器/应用程序运行)时,将添加第二组控件,但不可见,第一组控件现在可见。在第二次刷新/第三次运行时,将添加第三组不可见的控件,并显示前 2 组控件。

首先,我需要在再次添加之前清除所有动态添加的项目的父面板。但是,就问题而言,调用ReportViewerInstance。RefreshReport() 应使动态添加的控件在报表的初始呈现之前变得可见。我即将尝试这种情况。我还不确定如何调用报表查看器的实例,但至少,我应该能够将对实例的引用作为报表参数或类似参数传递。

RefreshReport() 调用在此 Telerik 帮助帖子中找到:

尝试上述操作后,我将更新我的结果。

更新:刷新报告对我不起作用 - 它取消了处理并导致没有报告。但是,我确实解决了我的问题。而且,它也应该解决OP的问题。

Eric 的代码演示了尝试在 ItemDataBinding 事件中创建和显示动态添加的控件。我也在做同样的事情,也尝试了ItemDataBound。这两个事件都在处理运行时发生,有关动态添加的表控件的帮助主题提示了我。Telerik 专家建议在处理过程中不要更改报告项,以避免不可预测的行为。之后,我将用于创建控件的代码移动到方法(而不是事件)中,并从报表中调用它。NeedDataSource 事件,在实例化所有需要的数据对象之后,以及在将报表数据源设置为我的对象集合之一之前。这很好用!

我希望这对其他人有所帮助!