当控件在屏幕上时,为什么ASP.NET Repeater.Items集合为空?

Rya*_*yan 1 asp.net repeater

我有一个带有以下中继器的ASP页面:

<asp:Repeater runat="server" ID="RegionRepeater"
    DataSourceID="SqlDataSourceRegions" EnableViewState="true">
    <ItemTemplate>
        <tr>
            <td valign="top">
                <b><%#Eval("description")%></b>
                <asp:HiddenField runat="server" ID="RegionID"
                    Value='<%#Eval("region_id")%>'/>
            </td>
            <td>
                <asp:FileUpload ID="FileUpload" runat="server" Width="368px" />
            </td>
        </tr>
    </ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

(转发器位于向导内部,位于内容窗格内).

后面的代码连接到

protected void Wizard1_NextButtonClick(object sender, WizardNavigationEventArgs e)
Run Code Online (Sandbox Code Playgroud)

事件.屏幕上有两个项目(表格内有两行).但是,当代码尝试读取这些项时,Items集合为空!

foreach(RepeaterItem region in RegionRepeater.Items)
{
    // Never runs - the RegionRepeater.Items.Count = 0
    FileUpload fileUpload = (FileUpload) region.FindControl("FileUpload");
    String regionID = ((HiddenField)region.FindControl("RegionID")).Value;
    ...
Run Code Online (Sandbox Code Playgroud)

当屏幕上绘制了控件时,为什么集合为空?

非常感谢任何帮助; 这开始让我疯狂.

(顺便说一下:我尝试添加/删除EnableViewState ="true"标签)

Ode*_*ded 5

你确定转发器已经在回发上反弹了吗?

ASP.NET页生命周期意味着回发,则需要重新绑定,如中继器控件,以便事件处理程序才能够看到的数据.