当我访问Repeater内的TextBox时,为什么TextBox值显示为Null

时间:2016-03-31 04:04:17

标签: c# asp.net

  

我在网上购物车项目中遇到问题....   问题是当我获取/访问转发器控件内的文本框时......   我在下面的代码中使用了这个,但是当我输入一些值到那个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" />

TextBox position...

And here the c# code...

请回复 感谢

2 个答案:

答案 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);
           }
      }
   }