回发时未绑定ListView的数据

时间:2015-04-27 13:00:29

标签: c# asp.net

我正在编写一些消息面板作为用户控件。代码看起来像这样(为了清晰起见缩短了)

protected void Page_PreRender(object sender, EventArgs e)
{
    BindMessages(MessageType.Error, ErrListView);
}

 private void BindMessages(MessageType type, ListView target)
 {
    List<string> messages = Session.PopMessages(type);
    target.DataSource = messages;
    target.DataBind();
 }

ASCX:

<asp:ListView runat="server" ID="ErrListView">
    <ItemTemplate><li><%# Container.DataItem %></li></ItemTemplate>
</asp:ListView>

代码在每个请求(初始页面加载和回发)上执行,并且消息正确地来自SessionState。但是,如果请求是回发,则实际上不会更新消息(就好像DataBind()不会发生一样)。

任何人都有线索了吗?

1 个答案:

答案 0 :(得分:0)

我在这里失败的原因是我的内容没有包含UpdatePanel。更改我的ascx文件以包含所述控件解决了我的问题。

<asp:UpdatePanel runat="server" ID="StatusUpdatePanel">
<ContentTemplate>

    <ul Class="Errors">
    <asp:ListView runat="server" ID="ErrListView">
        <ItemTemplate><li><%# Container.DataItem %></li></ItemTemplate>
    </asp:ListView>
    </ul>

</ContentTemplate>
</asp:UpdatePanel>