2012-04-24 4 views
1

리피터에 드롭 다운 목록이 있습니다. 다시 게시 할 때마다 원한다면 드롭 다운 목록을 다시 바인딩하십시오.리피터의 드롭 다운 목록 리 바인딩

이 문제를 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 값을 겹쳐 쓸 수 있습니다.

답변

0

드롭 다운 목록이 viewstate에 의해 덮어 쓰여지고있을 가능성이 있습니다. 예를 들어 페이지로드시 페이지 init이 완료된 후에 드롭 다운 목록이 채워 졌는지 확인하십시오. 다음 페이지 사이클을 참조하십시오. http://msdn.microsoft.com/en-us/library/ms178472.aspx