2012-04-24 19 views
1

リピーターにドロップダウンリストがあります。私は、ポストバックが発生したときはいつでも、ドロップダウンリストを再バインドする必要があります。リピーターにドロップダウンリストを再バインド

この問題を解決するには、コードが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、問題はを解く:

私はドロップダウンリストのバインドを入れてやりましたこのリピータのprerenderイベントメソッドのコードは、viewstate値を上書きすることができます。

答えて

0

ドロップダウンリストがおそらくviewstateによって上書きされている可能性があるため、ページのロードなどで、ページの初期化が完了した後に必ずドロップダウンリストを作成してください。ここのページサイクルをご覧ください: http://msdn.microsoft.com/en-us/library/ms178472.aspx

関連する問題