在ASP.NET中要如何動態設定XtraReport報表參數,或是操作報表呢?
在ASP.NET中要如何動態設定XtraReport報表參數,或是操作報表呢? 如下,
依「Create a Web Report with Parameters」設定報表參數時,需要設定 ASPxDocumentViewer 的 SettingsSplitter 中的 RightPaneVisible 屬性設定為 True (預設就是True)。
然後在 ASPxDocumentViewer 的 OnCustomizeParameterEditors 事件中去指定報表的參數,或是取得報表物件來處理它。
但是這樣User就要去按 Submit 的Button, 如上圖。
可是如果將 RightPaneVisible 屬性設定為 False ,報表就不會觸發 OnCustomizeParameterEditors 事件,如下圖,
如果想要透過程式去指定,不想讓User看到呢? 同事 Jimmy 有找到可以設定 SettingsSplitter 中的 ParametersPanelCollapsed 屬性設定為 True ,這樣報表參數的Panel就會合起來,而且不需要按 Submit 報表就會自動呈現,如下圖,
但比較可惜的是,還是有Panel在。 後續有進一步的研究再更新上來。
測試的範例如下,
XtraReport1 UI
XtraReport1.cs
public partial class XtraReport1 : DevExpress.XtraReports.UI.XtraReport
{
public XtraReport1()
{
InitializeComponent();
}
//設定公開的Method來設定值 for test
public void AssignText2(string value)
{
xrRichText1.Text = value;
}
}
WebForm1.aspx
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server" Text="TextBox1 xxxx tet"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server" Text="TextBox2 xxxx tet"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" />
<dx:ASPxDocumentViewer ID="ASPxDocumentViewer1" runat="server"
ReportTypeName="WebApplication2.XtraReport1"
OnCustomizeParameterEditors="documentViewer_CustomizeParameterEditors">
<SettingsSplitter ParametersPanelCollapsed="True" RightPaneVisible="True" />
</dx:ASPxDocumentViewer>
</div>
</form>
WebForm1.aspx.cs (在 OnCustomizeParameterEditors 事件中去指定報表的參數,或是取得報表物件來處理它)
protected void documentViewer_CustomizeParameterEditors(object sender, DevExpress.XtraReports.Web.CustomizeParameterEditorsEventArgs e)
{
string paraName = e.Parameter.Name;
switch (paraName)
{
case "label1":
e.Parameter.Value = TextBox1.Text;
break;
default:
break;
}
XtraReport1 rpt1 = e.Report as XtraReport1;
rpt1.AssignText2(TextBox2.Text);
}
參考資料