Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.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
当屏幕上显示控件时,为什么ASP.NET Repeater.Items集合为空?_Asp.net_Repeater - Fatal编程技术网

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

当屏幕上显示控件时,为什么ASP.NET Repeater.Items集合为空?,asp.net,repeater,Asp.net,Repeater,我有一个带有以下转发器的ASP页面: <asp:Repeater runat="server" ID="RegionRepeater" DataSourceID="SqlDataSourceRegions" EnableViewState="true"> <ItemTemplate> <tr> <td valign="top"> <b><%#E

我有一个带有以下转发器的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>
事件。屏幕上有两个项目(表中有两行)。但是,当代码尝试读取这些项目时,项目集合为空

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;
    ...
当屏幕上绘制有控件时,为什么集合为空

非常感谢你的帮助;这开始让我发疯了


(顺便说一句:我尝试添加/删除EnableViewState=“true”标记)

您是否确保中继器已在回发中反弹


这意味着在回发中,您需要重新绑定控件(如中继器),以便事件处理程序能够看到数据。

您是否确保中继器已在回发中反弹


这意味着在回发中,您需要重新绑定控件(如中继器),以便事件处理程序能够看到数据。

也许您每次加载页面时都会进行数据绑定,在执行之前是否检查没有postbacl?

也许您每次加载页面时都会进行数据绑定,在进行操作之前,是否检查是否没有postbacl?

我相信只有在绑定时才会填充项目。因此,您必须在每次加载页面时重新绑定数据。这是由于网络的无状态环境;它不记得数据源,但从绑定到它的viewstate加载创建的控件

因此,在后续请求中,它加载控件层次结构,但不知道创建UI的数据源,除非重新绑定


HTH.

我相信物品只有在绑定时才会填充。因此,您必须在每次加载页面时重新绑定数据。这是由于网络的无状态环境;它不记得数据源,但从绑定到它的viewstate加载创建的控件

因此,在后续请求中,它加载控件层次结构,但不知道创建UI的数据源,除非重新绑定


HTH.

检查代码隐藏页中是否有
页.DataBind()
。这会使中继器绑定空数据。

检查代码后面的页面中是否有
Page.DataBind()
。这会使您的中继器绑定到空数据。

Doh!非常感谢。非常地(其他答案都是正确的-谢谢您的时间。这是第一个,所以我将其标记为已接受)Doh!非常感谢。非常地(其他答案都是正确的-谢谢你的时间。这是第一个,所以我把它标记为接受)这个提示帮了我的忙。我在中继器中有复选框,如果我在其中绑定中继器!IsPostBack、中继器被清除,如果不检查IsPostBack,则用户选择的复选框被清除。你的暗示起了作用。我在母版页上有Page.DateBind…谢谢这个提示帮了我的忙。我在中继器中有复选框,如果我在其中绑定中继器!IsPostBack、中继器被清除,如果不检查IsPostBack,则用户选择的复选框被清除。你的暗示起了作用。我在母版页上有Page.DateBind…谢谢
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;
    ...