2010-09-20 113 views
0

我有一个下拉列表,当我设置AutoPostBack =“true”时,页面不断刷新。Autopostback不断刷新网站

谁知道什么可能是错的?

<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> 

回答

1

的DropDownList的不应该是ItemTemplate中里面,因为这意味着它会被“重复”的每个项目。

由于DropDownList的AutoPostBack为true,并且有一个静态事件处理程序,所以每次选择某个项目时,下拉列表中的所有项目都将触发autopostback事件。

因此,如果您的中继器中有100个项目,则AutoPostBack将针对每个选定的索引更改事件被触发100次。

有意义吗?

将DropDownList移到Repeater外部,它应该可以解决您的问题。

但是,如果你必须有它的中继器内(如果希望每个项目有具体的行为),你需要线了对ItemCreated事件SelectedIndexChanged事件:

protected void repFunctionsToAdd_ItemCreated(object sender, RepeaterItemEventArgs e) 
{ 
    DropDownList dll = e.Item.FindControl("ddlUsers"); 
    ddl.SelectedIndexChange += ddlUsers_Sic; 
} 
+0

它使得感知,但它需要很高兴......有一些功能,由中继器重复,但每个功能,必须有一个下拉列表中的用户。 – Joshlo 2010-09-20 08:47:52

+1

@Joshlo - 虽然如此。 =)查看我的更新 – RPM1984 2010-09-20 08:49:01

+0

当渲染页面时,它在渲染页面 – Joshlo 2010-09-20 09:20:51

-1

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

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

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

+0

为什么投票?没有判断它,就像学习:) – Curt 2011-06-22 13:01:55