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 具有 AutoPostBack 为 true 和一个静态事件处理程序,所以每次您选择一个项目时,下拉列表中的所有项目都会触发 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

或者,您可以编写一个 javascript 脚本来运行一个 WebMethod,它可以处理需要发生的任何服务器端更改。

于 2010-09-20T09:43:14.117 回答