1
我在中继器中有下拉列表。我希望每当回发被提出时,然后重新绑定下拉列表。在中继器中重新绑定下拉列表
问题是,当我debbug这个东西,代码确实通过ddl.databind()运行,但对于一些resons,下拉列表仍然加载列表和从原始viewstate中选择的值。我知道,因为如果我将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,但两者faied):
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"));
}
}
UPDATE,问题解决了:
我所做的是把下拉列表绑定代码在此repeater的prerender事件方法中,因此可以覆盖viewstate值。