为什么我在asp.net中的DropDownList没有刷新

本文关键字:DropDownList 刷新 中的 net asp 为什么 | 更新日期: 2023-09-27 17:57:52

我的asp.net网页上有一个简单的DropDownList:

它看起来像这样:

       <asp:UpdatePanel ID="UpdatePanel4" runat="server" UpdateMode="Conditional">
            <ContentTemplate>
                <asp:DropDownList ID="FriendList" runat="server" 
                     EnableViewState="False" Height="30px" Width="10%"  
                     OnTextChanged="FriendListSwitch" AutoPostBack="True">
                </asp:DropDownList>
            </ContentTemplate>
            <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="btnSend" />
            </Triggers>
            <--!The button is a stub, I actually need to load it from the codebehind-->
       </asp:UpdatePanel>

然后我有这样的代码:

void OnRosterItem(object sender, agsXMPP.protocol.iq.roster.RosterItem item)
{
    FriendList.Items.Add(new ListItem(String.Format("{0}", item.Jid.User), ""));
    FriendList.DataBind();
}

在调试过程中,我可以看到"FriendList"正在被填充,而且"btnSend"也正在被单击。

然而,我的DropDownList并没有重新填充,它只是保持空的,为什么它不刷新?

编辑:我宁愿删除按钮并用替换它

 void OnRosterEnd(object sender)
     {
         UpdatePanel5.Update();
     }

但后来我不断得到

The Update method can only be called on UpdatePanel with ID 'X' before Render.

解决了,DataBind()只在Page_Load中对我有效。

为什么我在asp.net中的DropDownList没有刷新

按钮"btnSend"应位于更新面板内

尝试使用OnSelectedIndexChanged事件而不是OnTextChanged

如果您需要更新下拉列表的按钮,那么它需要在更新面板中

如果您需要下拉列表作为触发器,那么异步回发触发器需要具有下拉列表的控制id