重新绑定转发器中的下拉列表

本文关键字:转发器 下拉列表 绑定 新绑定 | 更新日期: 2023-09-27 18:32:02

我在中继器中有一个下拉列表。每当提出回发时,我都希望重新绑定下拉列表。

问题是,当我对这个东西进行解码时,代码确实通过 ddl.databind() 运行,但对于某些共振,下拉列表仍然从原始视图状态加载列表和所选值。我知道这一点,因为如果我将 ddl 的 EnableViewState 设置为"false",我可以正确地重新绑定 ddl。

有什么建议吗?

<asp:Repeater ID="reEventsDataTypeOthers" runat="server" Visible="false">
...
<ItemTemplate>
...
<asp:DropDownList ID="ddlEventSessionLocation" runat="server" CssClass="ddlControlS1L" Title="Location" EnableViewState="true"/>

Codebacke(我试图在_ItemCreated和_ItemDataBound中绑定它,但两者都失败了):

void reEventsDataTypeOthers_ItemCreated(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem)
                return;
            FSIDropDownList ddl = e.Item.FindControl("ddlEventSessionLocation") as FSIDropDownList;
            if (ddl != null && ddl.SelectedValue != "NOTSET")
            {
                ddl.DataSource = EventLocations;
                ddl.DataTextField = "Value";
                ddl.DataValueField = "Key";
                ddl.DataBind();
                ddl.Items.Insert(0, new ListItem("Not Set", "NOTSET"));
            }
        }

更新,问题已解决

我所做的是将下拉列表绑定代码放在此中继器的预呈现事件方法中,从而可以覆盖视图状态值。

重新绑定转发器中的下拉列表

下拉列表

可能被视图状态覆盖,请确保在页面初始化完成后填充它,例如在页面加载中。请参阅此处的页面周期:http://msdn.microsoft.com/en-us/library/ms178472.aspx