我有一個帶有ReportViewer控件的ASP.NET頁面,該控件顯示由GET參數指定的SSRS報告。我隱藏了ReportViewer的ParameterHeader,並使用ListBox和CalendarExtender等控件在ASP.net頁面上顯示自己的參數(我這樣做是因爲不是每個人都可以看到所有內容,而且我想控制選擇的報表參數哪些部分被顯示)。在回發期間訪問中繼器內的動態創建的控件
數量/類型參數的報表之間變化,所以我有一個<asp:Repeater>
數據綁定到報表的參數(這是我開始使用ServerReport.GetParameters()
),我創建動態下拉/文本/日曆控件,並將它們添加到ParameterEntryPlaceholder
在ReportParameterEditRepeater_ItemDataBound
。
<table><tr>
<td>
<asp:Repeater ID="ReportParameterEditRepeater" OnItemDataBound="ReportParameterEditRepeater_ItemDataBound" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<%#Container.ItemIndex % 4 == 0 ? "<tr>" : "" %>
<td><b><%#((ReportParameterInfo)Container.DataItem).Prompt %>: </b></td>
<td><asp:PlaceHolder runat="server" ID="ParameterEntryPlaceholder"></asp:PlaceHolder></td>
<%#Container.ItemIndex % 4 == 3 ? "</tr>" : "<td style='width: 20px;'></td>" %>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</td>
<td>
<asp:UpdatePanel ID="ReportRefreshUpdatePanel" ChildrenAsTriggers="True" runat="server">
<ContentTemplate>
<asp:Button ID="ViewReportBtn" runat="server" OnClick="ViewReportBtn_Click" Text="View Report" />
</ContentTemplate>
</asp:UpdatePanel>
</td>
</tr></table>
有標有「查看報告」我旁邊的控制,揭開序幕,是爲了收集所有的參數控制值的方法,設置它們的ServerReport的,然後刷新報告異步。
但是,在我的「查看報告」回發期間,我看不到動態創建的控件 - ParameterEntryPlaceholder爲空。如果我重新綁定中繼器,我可以看到它們,但如果我這樣做,則會丟失用戶的選擇。
TL; DR-如何在頁面加載過程中,回發過程中,無需重新綁定,如何訪問我創建/添加到窗體的控件?
在控件上使用EnableViewState = true執行此操作,我可以看到控件並訪問用戶(非默認)輸入。非常感謝! – Chris 2013-02-14 16:09:04