Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在回发期间访问中继器内动态创建的控件_C#_Asp.net_Reporting Services_Repeater_Reportviewer - Fatal编程技术网

C# 在回发期间访问中继器内动态创建的控件

C# 在回发期间访问中继器内动态创建的控件,c#,asp.net,reporting-services,repeater,reportviewer,C#,Asp.net,Reporting Services,Repeater,Reportviewer,我有一个带有ReportViewer控件的ASP.NET页面,该控件显示由GET参数指定的SSRS报告。我正在隐藏ReportViewer的ParameterHeader,并使用ListBox和CalendarExtender等控件在ASP.net页面上显示参数(我这样做是因为不是每个人都可以看到所有内容,我希望控制选择显示哪些部分的报告参数) 参数的数量/类型因报表而异,因此我有一个数据绑定到报表的参数(我使用ServerReport.GetParameters())中,我动态创建下拉/tex

我有一个带有ReportViewer控件的ASP.NET页面,该控件显示由GET参数指定的SSRS报告。我正在隐藏ReportViewer的ParameterHeader,并使用ListBox和CalendarExtender等控件在ASP.net页面上显示参数(我这样做是因为不是每个人都可以看到所有内容,我希望控制选择显示哪些部分的报告参数)

参数的数量/类型因报表而异,因此我有一个
数据绑定到报表的参数(我使用
ServerReport.GetParameters()
)中,我动态创建下拉/textbox/calendar控件,并将它们添加到
ReportParameterEditRepeater\u ItemDataBound
中的
ParameterEntryPlaceholder

<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-如何在页面加载期间、回发期间从代码隐藏处访问创建/添加到表单中的控件,而无需重新绑定?

无论您做什么,都需要重新绑定才能查看控件。在页面的生命周期中进行重新绑定时,您遇到的问题是


在回发期间,需要在OnInit页面事件期间重新绑定动态添加的控件。这将允许恢复ViewState。

使用控件上的EnableViewState=true执行此操作,我可以看到控件并访问用户(非默认)输入。谢谢!