为什么我在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中对我有效。
按钮"btnSend"应位于更新面板内
尝试使用OnSelectedIndexChanged事件而不是OnTextChanged
如果您需要更新下拉列表的按钮,那么它需要在更新面板中
如果您需要下拉列表作为触发器,那么异步回发触发器需要具有下拉列表的控制id