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 的设计器中添加的。 尝试设置可见属性是有效的,但将文本框添加到标题则不行。
尝试查看此文档。我注意到的唯一区别是他们将文本框添加到面板。然后,他们将面板添加到报告中。检查是否将tbGenotype添加到面板中,但我认为您在报告中放置的每个元素都必须首先在同一面板中。
我有同样的问题,但我注意到当我使用报表查看器中的刷新按钮刷新报表时(在我的 Windows 应用程序中;对于 Web 版本应该相同),动态添加的控件会显示出来。当我第二次刷新时,将显示一组额外的(第二组)控件。
我的观察是这样的:在初始运行时,控件被添加,但不可见(无论可见属性值是否为真)。在第一次刷新(第二次服务器/应用程序运行)时,将添加第二组控件,但不可见,第一组控件现在可见。在第二次刷新/第三次运行时,将添加第三组不可见的控件,并显示前 2 组控件。
首先,我需要在再次添加之前清除所有动态添加的项目的父面板。但是,就问题而言,调用ReportViewerInstance。RefreshReport() 应使动态添加的控件在报表的初始呈现之前变得可见。我即将尝试这种情况。我还不确定如何调用报表查看器的实例,但至少,我应该能够将对实例的引用作为报表参数或类似参数传递。
RefreshReport() 调用在此 Telerik 帮助帖子中找到:
尝试上述操作后,我将更新我的结果。
更新:刷新报告对我不起作用 - 它取消了处理并导致没有报告。但是,我确实解决了我的问题。而且,它也应该解决OP的问题。
Eric 的代码演示了尝试在 ItemDataBinding 事件中创建和显示动态添加的控件。我也在做同样的事情,也尝试了ItemDataBound。这两个事件都在处理运行时发生,有关动态添加的表控件的帮助主题提示了我。Telerik 专家建议在处理过程中不要更改报告项,以避免不可预测的行为。之后,我将用于创建控件的代码移动到方法(而不是事件)中,并从报表中调用它。NeedDataSource 事件,在实例化所有需要的数据对象之后,以及在将报表数据源设置为我的对象集合之一之前。这很好用!
我希望这对其他人有所帮助!