取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");--------------------编程问答--------------------
--------------------编程问答-------------------- protected void Repeater2_ItemDataBound(object sender, RepeaterItemEventArgs e)
string TB_sl=((TextBox)Repeater1.Items[0].FindControl("TB_sl")).Text.Trim();
{
TextBox control = (TextBox )repeater.FindContral("TB_sl");
} --------------------编程问答-------------------- --------------------编程问答-------------------- 这些方法我全部都试过了,取不到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#