2010-09-20 79 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