Autopostback保持刷新网站

时间:2010-09-20 08:30:40

标签: asp.net autopostback

我有一个下拉列表,当我设置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>

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:-1)

如果您运行的是ASP.NET 2.0+配置,则可以将DropDownList放在UpdatePanel中,以防止整页回发。然后,这将仅使用ASP.NET AJAX重新呈现页面的该段。

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

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