我的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中为我工作。
答案 0 :(得分:1)
按钮&#39; btn发送&#39;应该在更新面板中
答案 1 :(得分:0)
尝试使用OnSelectedIndexChanged事件而不是OnTextChanged
答案 2 :(得分:0)
如果您需要按钮来更新下拉列表,则需要在更新面板中
如果您需要下拉列表作为触发器,则asyncpostback触发器需要具有下拉列表的控件ID