2012-03-13 21 views
0

我有包含TextBox和LinkBut​​ton的Repeater。当点击LinkBut​​ton的,我需要抢TextBox.Text和做的东西......使用TextBox控件的事件处理程序OnItemCommand

使用事件Repeater1_ItemDataBound(对象发件人,RepeaterItemEventArgs E)我能够获得使用文本框TX = E文本框的值.Item.FindControl( “txCode”)作为文本框

然而

使用事件Repeater1_ItemCommand(对象发件人,RepeaterCommandEventArgs E)我没有得到任何东西。 TextBox是空的。

如何使用'OnItemCommand'从TextBox中获取文本/内容?

<asp:Repeater ID="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound" OnItemCommand="Repeater1_ItemCommand"> 
    <ItemTemplate> 
     <li>      
     <asp:TextBox ID="txCode" runat="server"></asp:TextBox> 
     <asp:LinkButton CommandName="verifyCode" ID="lbCode" runat="server">Submit<asp:LinkButton> 
     </li> 
    </ItemTemplate> 
</asp:Repeater> 

我能够得到以下

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    TextBox tx = e.Item.FindControl("txCode") as TextBox; 
    string myText = tx.Text; '<--- working 
} 

的文本框的值,我没能获得低于

protected void Repeater1_ItemCommand(object sender, RepeaterCommandEventArgs e) 
{ 
    if (e.CommandName == "verifyCode") 
    { 
     TextBox tx = e.Item.FindControl("txCode") as TextBox; 
     string myText = tx.Text; '<--- NOT working 
} 
+2

你有没有调试,看看是否引发此事件?也许你错过了检查Page_Load中的'!IsPostBack'。不要将回放器绑定到它的DataSource。 – 2012-03-13 23:17:53

+0

if(!IsPostBack) - Damm < - working!谢谢@Tim Schmelter – 2012-03-13 23:21:56

回答

2

的文本框的值不要你Repeater结合在每次回传时都是DataSource。否则ViewState无法正确重新加载,导致这样的问题。

因此时常检查在Page_Load中的IsPostBack property当启用ViewStateEnableViewState=true):

if(!IsPostBack)BindRepeaterToDataSource();