2010-09-23 80 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

希望这会有所帮助。