【问题标题】:Rebind a dropdownlist in a repeater在转发器中重新绑定下拉列表
【发布时间】:2012-04-24 11:27:07
【问题描述】:

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

问题是,当我调试这个东西时,代码确实通过了 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"/>

Codebehinde(我尝试将它绑定在 _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"));
            }
        }

更新,问题已解决

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

【问题讨论】:

    标签: c# asp.net drop-down-menu repeater viewstate


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多