代码背后的代码:我在网上购物车项目中遇到问题.... 问题是当我获取/访问转发器控件内的文本框时...... 我在下面的代码中使用了这个,但是当我输入一些值到那个Textbox而不是它显示空值....
protected void repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "addtoCartName")
{
foreach (RepeaterItem item in repeater1.Items)
{
TextBox txtName = (TextBox)item.FindControl("txtQuantity");
if (txtName!= null)
{
strText = strText + ", " + txtName.Text;
Response.Write("Text =" + strText);
}
}
}
ASPX:
<asp:Button runat="server" ID="addtoCart" Text="Add to Cart" CommandName="addtoCartName" UseSubmitBehavior="false" />
请回复 感谢
答案 0 :(得分:1)
我认为通过转发器控制进行循环会导致问题,因为您无法确定它是否正在访问正确行的文本框控件。您需要从引发事件的行中获取文本框:
protected void repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "addtoCartName")
{
TextBox txtName = (TextBox)e.Item.FindControl("txtQuantity")
if (txtName!= null)
{
strText = strText + ", " + txtName.Text;
Response.Write("Text =" + strText);
}
}
}
答案 1 :(得分:0)
ListItem的ItemTemplate中的TextBox不在页眉/页脚等中,因此您需要检查Repeater项的Item Type。 试试这个:
foreach (RepeaterItem item in repeater1.Items)
{
if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
{
TextBox txtName = (TextBox)item.FindControl("txtQuantity");
if (txtName!= null)
{
strText = strText + ", " + txtName.Text;
Response.Write("Text =" + strText);
}
}
}