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

时间:2014-04-10 21:22:02

标签: c# asp.net drop-down-menu webforms refresh

我的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();
}

调试时我可以看到&#39; FriendList&#39;正在填补,而且那个&#39;发送&#39;被点击了。

然而我的DropDownList并没有重新填充,它只是保持空白,为什么它不令人耳目一新?

编辑:我更愿意删除按钮并将其替换为

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

但后来我一直在

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

解决了,DataBind()只能在Page_Load中为我工作。

3 个答案:

答案 0 :(得分:1)

按钮&#39; btn发送&#39;应该在更新面板中

答案 1 :(得分:0)

尝试使用OnSelectedIndexChanged事件而不是OnTextChanged

答案 2 :(得分:0)

如果您需要按钮来更新下拉列表,则需要在更新面板中

如果您需要下拉列表作为触发器,则asyncpostback触发器需要具有下拉列表的控件ID