0

ドロップダウン リストがあり、AutoPostBack="true" を設定すると、ページが更新され続けます。

何が間違っているのか知っている人はいますか?

<asp:Repeater ID="repFunctionsToAdd" runat="server" OnItemDataBound="repFunctionsToAdd_ItemDataBound">
 <ItemTemplate>
   <div class="person-section">
     <div class="row">
      <strong>
       <%# Eval("Name") %>
      </strong>
      <a class="btn-question" href="#">question</a>
      <div class="load">
       <img src="../images/load<%# Eval("PreProductionLoad") %>.gif" width="40" height="16" alt="image description" />
       <img src="../images/load<%# Eval("ProductionLoad") %>.gif" width="40" height="16" alt="image description" />
       <img src="../images/load<%# Eval("PostProductionLoad") %>.gif" width="40" height="16" alt="image description" />
      </div>
     </div>
     <div class="row">
      <div class="btn01 btn-tilfoj">
       <ctrl:Hyperlink ID="hlAddFunction" runat="server" Icon="Plus" Text="Tilføj" />
      </div>
      <label for="select2">
       Tilføj til:</label>
      <asp:DropDownList ID="ddlUsers" runat="server" Width="190" OnSelectedIndexChanged="ddlUsers_Sic" AutoPostBack="true" />                                                      
   </div>                                                
  </div>
 </ItemTemplate>
</Repeater>
4

2 に答える 2

1

DropDownList は ItemTemplate 内にあってはなりません。これは、アイテムごとに「繰り返される」ことを意味するためです。

DropDownList には true への AutoPostBack と 1 つの静的イベント ハンドラーがあるため、アイテムを選択するたびに、ドロップダウン内のすべてのアイテムで autopostback イベントが発生します。

したがって、リピーターに 100 個のアイテムがある場合、選択されたインデックス変更イベントごとに AutoPostBack が 100 回発生します。

わかる?

DropDownList をリピーターの外に移動すると、問題が解決するはずです。

ただし、リピーター内に配置する必要がある場合 (各アイテムに特定の動作を持たせたい場合) は、ItemCreated イベントで SelectedIndexChanged イベントを接続する必要があります。

protected void repFunctionsToAdd_ItemCreated(object sender, RepeaterItemEventArgs e)
{
   DropDownList dll = e.Item.FindControl("ddlUsers");
   ddl.SelectedIndexChange += ddlUsers_Sic;
}
于 2010-09-20T08:34:46.230 に答える
-1

ASP.NET 2.0+ 構成を実行している場合は、フル ページ ポストバックを防ぐためDropDownListにを配置できます。UpdatePanelこれにより、ASP.NET AJAX を使用してページのそのセグメントのみが再レンダリングされます。

http://msdn.microsoft.com/en-us/library/bb386454.aspx

あるいは、発生する必要があるサーバー側の変更を処理できる WebMethod を実行する JavaScript スクリプトを作成することもできます。

于 2010-09-20T09:43:14.117 に答える