钻取报表的作用?
添加钻取功能使报表更加的灵活易用。它可以使用户查看感兴趣数据的更详细信息,对用户理解数据有很大的帮助。
本文即将阐述如何在 FlashViewer 中使用 http://helpcentral.componentone.com/nethelp/AR8Help/AR8_HelpOnlineEN/index.html?arWLKCustomFlashViewer.html" target="_blank">客户端API 实现钻取功能。
我们需要做如下工作:
在我们实现该功能之前,我们需要了解相关的接口信息:
实现方法
设置 FlashViewer 控件的“UseClientApi” 属性为true,确保点击链接时可以出发客户端事件。在本示例中我们使用 Code Based 报表作为父报表,XML Based 报表作为子报表。
首先,我们需要设置 TextBox 的 Hyperlink” 属性为其文本值。
private void detail_Format(object sender, EventArgs e)
{
if (txtCountry1.Text != "")
{
txtCountry1.HyperLink = txtCountry1.Text;
}
}
在客户端的 OnLinkClick 事件中获取点击链接的值,传递给后台:
var viewer;
function init() {
GrapeCity.ActiveReports.Viewer.OnLoad("WebViewer1", function () {
viewer = GrapeCity.ActiveReports.Viewer.Attach("WebViewer1");
viewer.setEventsHandler({
OnLinkClick: function (e) {
var _paramValue = e.Link;
viewer.LoadDocument("SectionReport2.rpx?parameter1=" + _paramValue + "&OutputFormat=Rdf3");
return true;
}
});
});
}
重新打开主报表的方法如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SectionReport1 rpt = new SectionReport1();
WebViewer1.Report = rpt;
Session["Report"] = rpt;
}
}
protected void btnLoad_Click(object sender, EventArgs e)
{
WebViewer1.Report = ((GrapeCity.ActiveReports.SectionReport)Session["Report"]);
}
效果图:
示例下载:
VS2010 + .NET 4.0 + C# + AR8 SP1