当前位置:编程学习 > C#/ASP.NET >>

取repeater里边绑定的textbox的值

请问一下就是在repeater中绑定了一个textbox控件代码:   <asp:Repeater ID="Repeater2" runat="server" OnItemDataBound="Repeater2_ItemDataBound">
                        <HeaderTemplate>
                            <table width="250" border="0" cellpadding="0" cellspacing="0">
                                <tr>
                                    <td align="center">
                                        编码</td>
                                    <td align="center">
                                        名称</td>
                                        <td align="center">数量</td>
                                        <td></td>
                                </tr>
                        </HeaderTemplate>
                        <ItemTemplate>
                            <tr>
                                <td align="center">
                                    <%#Eval("Xzjsymbol")%>                                </td>
                                <td align="center">
                                    <%#Eval("Xzjname") %>                                </td>
                                <td>
                                  <asp:TextBox ID="TB_sl" runat="server" Width="20"></asp:TextBox></td>
                                <td>
                                   <a href="index_find.aspx?id=<%#Eval("Xzjlistid")%>">>></a></td>
                            </tr>
                        </ItemTemplate>
                        <FooterTemplate>
                            </table></FooterTemplate>
                    </asp:Repeater>这个我要用程序如何才能够获取的到TB_sl的值? --------------------编程问答-------------------- 这个我要用程序如何才能够获取的到TB_sl的值?
==
取决你在什么控件里的什么事件,通常都需要FindControl --------------------编程问答-------------------- 在repeater里面用findContral方法取

TextBox control = (TextBox )repeater.FindContral("TB_sl");  --------------------编程问答--------------------
TextBox control = (TextBox )repeater.FindContral("TB_sl"); 
--------------------编程问答--------------------

string TB_sl=((TextBox)Repeater1.Items[0].FindControl("TB_sl")).Text.Trim();
--------------------编程问答--------------------     protected void Repeater2_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
           TextBox control = (TextBox )repeater.FindContral("TB_sl"); 
        } --------------------编程问答--------------------
引用 4 楼 wangkun9999 的回复:
C# code
string TB_sl=((TextBox)Repeater1.Items[0].FindControl("TB_sl")).Text.Trim();
--------------------编程问答-------------------- 这些方法我全部都试过了,取不到TB_sl输入的文本值。

--------------------编程问答--------------------
引用 3 楼 greatchao88 的回复:
C# code
TextBox control = (TextBox )repeater.FindContral("TB_sl"); 
         

 用你的这个方法就提示这样的错误:

索引超出范围。必须为非负值并小于集合大小。
参数名: index 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index --------------------编程问答-------------------- TextBox control = (TextBox )repeater.Items[第几行].FindContral("TB_sl");  --------------------编程问答-------------------- 我也碰到这样的问题,可以取到页面初始的textbox的值,但是修改后的值取不到,大家有没有碰到这个问题啊?帮帮忙啊,郁闷了好几天了。
protected void ImageButton3_Click(object sender, ImageClickEventArgs e)
    {
        try
        {
            //loop thru each product in cart
            for (int idx = 0; idx <= rptCartItems.Items.Count; idx++)
            {
                try
                {
                    Label lblIID = (Label)rptCartItems.Items[idx].FindControl("lblProductId");
                    TextBox qtyObj = (TextBox)rptCartItems.Items[idx].FindControl("txtQty");
                    if (lblIID != null && qtyObj != null)
                    {
                        int quantity = 0;
                        if (qtyObj.Text.Trim() != "")
                        {
                            quantity = int.Parse(qtyObj.Text.Trim().ToString());
                        }
                        int productId = int.Parse(lblIID.Text.ToString());
                        //Response.Write(productId);
                        Response.Write(quantity);
                        SelectedInvoice.AddToInvoice(productId, quantity);
                        Session["Invoice"] = SelectedInvoice;
                    }
                }
                catch { }
            }
        }
        catch { }
        //Response.Redirect("ViewCart.aspx?GroupPID=" + HF_GroupPID.Value.ToString());
    }
上面Response.Write(quantity);只能输出textbox原来的值。 --------------------编程问答-------------------- 呵呵,找到了答案了
http://topic.csdn.net/t/20050929/10/4301270.html
原来是我的repeater的databind()没有写在   
  if   (!IsPostBack)   
  {   
  }   
  这个条件中。   
  不然的话每次都会重新绑定。 --------------------编程问答--------------------
TextBox control = (TextBox )repeater.FindContral("TB_sl"); 


这方法是对的,看你自己是用的什么事件了~~~

还有就是  
  if  (!IsPostBack)  
  {  
  }
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,