리피터에 드롭 다운 목록이 있습니다. 다시 게시 할 때마다 원한다면 드롭 다운 목록을 다시 바인딩하십시오.리피터의 드롭 다운 목록 리 바인딩
이 문제를 debbug 할 때 코드가 ddl.databind()를 통해 실행되었지만 일부 resons의 경우 dropdownlist는 여전히 원래 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에 바인딩하려고했으나 모두 설정하지 못했습니다) :
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는 문제 해결 : 나는 DropDownList로 바인딩을 투입 했는가
이 repeater의 prerender 이벤트 메소드에있는 코드를 사용하여 viewstate 값을 겹쳐 쓸 수 있습니다.