2010-09-23 81 views
0

我目前正在使用一箇中繼器,它有一定數量的下拉列表,它由多少項數據綁定到它。我想在用戶更改所選索引的情況下向每個這些下拉列表中添加一個事件。將事件添加到嵌套在Repeater ASP-C中的控件#

以下是我對中繼器(請注意,我做的所有的數據綁定在codebhind):

 <ItemTemplate> 
      <tr> 
       <td> 
        <asp:DropDownList ID="DropDownList1" runat="server" Text='<%# Eval("Data") %>' AutoPostBack="True" OnTextChanged="TextChanged"> 
         <asp:ListItem>Hello World</asp:ListItem> 
         <asp:ListItem>GoodBye Cruel World</asp:ListItem> 
        </asp:DropDownList> 
       </td> 
      </tr> 
     </ItemTemplate> 

     <FooterTemplate> 
      </table> 
     </FooterTemplate> 
    </asp:Repeater> 

我在這裏設置OnTextChanged事件,但是我做了一些嘗試使用不同的事件。我發現當我使用OnTextChanged或OnSelectedIndexChanged事件時,我的方法不會運行。但是,如果我使用OnLoad或OnPreRender等其他事件,則將其設置爲實際運行的方法。

簡而言之,爲什麼當我將這個下拉列表放在中繼器中時,只有一些事件似乎有效?

回答

1

這可能是因爲您正在重新綁定中繼器Page_Load。如果您在的CreateChildControls的OnPreRender綁定中繼器,該OnTextChangedOnSelectedIndexChanged事件(這兩者都依賴於ViewState中)將正確觸發;否則,控制過早反彈,並且沒有事件被觸發,因爲沒有檢測到變化。

其他事件正在解僱,因爲他們不依賴於ViewState

希望這會有所幫助。