我在VS里的网页里添加了 一个textbox 二个Button 还有一个 listbox
控件。
我就是想实现一个很简单的添加书名的功能(书名添加到listbox中)。将用户输入到 textbox中的文本与listbox控件中的每一项进行比较。
如果:listbox中存在等值的项,则提示"书名已经存在"。如不存在则将文本添加到listbox中。我写的代码,当第一次输入相同书名时会提示书名已存在,但当第二次输入相同书名时就报错了。
代码如下:   
  protected void Button1_Click(object sender, EventArgs e)
    {
        if (TextBox1.Text.Trim() == "")
        {
            Response.Write("请输入书名!");
        }
        else
        {
            
            foreach (ListItem li in ListBox1.Items)
            {
                if (li.Text == TextBox1.Text.Trim())
                {
                    Response.Write("该书已存在!");
                    break;
                }
                else
                {
                    ListBox1.Items.Add(TextBox1.Text.Trim());
                    Response.Write("添加成功!");
                }
            }
        }各位大虾帮帮我,谢了! 还有如果想删除listbox中的一个项 该怎么写代码啊? 
还有当我添加书名成功后,数据为什么不能永久保存到 LISTBOX中啊,还是只能即时的显示在网页中的LISTBOX控件中,关闭重新运行就不存在了。是不是不能用ADD方法?报错的图片在百度知道我提的问里有 地址是 http://zhidao.baidu.com/question/151381445.html 两边回答都给分啊!

解决方案 »

  1.   


    protected void Button1_Click(object sender, EventArgs e)
      {
      if (TextBox1.Text.Trim() == "")
      {
      Response.Write("请输入书名!");
      }
      else
      {
       
      foreach (ListItem li in ListBox1.Items)
      {
      if (li.Text == TextBox1.Text.Trim())
      {
      Response.Write("该书已存在!");
      break;
      }
      else
      {
      ListBox1.Items.Add(TextBox1.Text.Trim());
      Response.Write("添加成功!");
    break;//如果你这里没有停止的话,还会继续foreach,但你已经修改了集合
      }
      }
      }
      

  2.   

    删除的话,listbox的items里面,应该有个remove方法
      

  3.   

    1。ListBox1.Items.RemoveAt 按指定位置删除项
    2。网页程序都是无状态的,想要打开页面就能读出上一次选择的内容. 你就必须在一开始就及时保存下来这些数据,利用Session,cookie等等都可以实现.
      

  4.   

    加个break的话 当第二次输入相同的书名时  就可以添加相同的书名了。是不是 这里用到遍历 就会修改集合啊? 用遍历的方法好吗?有其他方法更好不?帮帮忙!
      

  5.   

    。ListBox1.Items.RemoveAt()或者Remove()
      

  6.   

    if (string.isNullorEmpty(TextBox1.Text.Trim()))
      {
      Response.Write("请输入书名!");
      }
      else
      {
       
      foreach (ListItem li in ListBox1.Items)
      {
      if (li.Text.Equals(TextBox1.Text.Trim()))
      {
      Response.Write("该书已存在!");
      break;
      }
      else
      {
       ListBox1.Items.Add(TextBox1.Text.Trim());
       Response.Write("添加成功!");
       break;
      }
    ListBox1.Items.Remove(li);
      

  7.   

    你的foreach那段循环有问题,按你那样写只会循环一次就必定跳出了,我把正确的贴出来protected void Button1_Click(object sender, EventArgs e)
      {
      if (TextBox1.Text.Trim() == "")
      {
      Response.Write("请输入书名!");
      }
      else
      {
      bool hasBook;
      foreach (ListItem li in ListBox1.Items)
      {
         if (li.Text == TextBox1.Text.Trim())
         {
           hasBook = true;
         }
      }
      if (hasBook)
      {
         Response.Write("该书已存在!");
      }
      else
      {
      ListBox1.Items.Add(TextBox1.Text.Trim());
      Response.Write("添加成功!");
      }
      }
      }删除ListBox项的方法:
    listbox.Items.Remove(TextBox1.Text.Trim());
      

  8.   

    改正:bool hasBook = false;
    上面忘赋初始值了,不好意思
      

  9.   

    “极品拖拉机”和“人生如梦”的方法都有些问题。 就是如果当listbox中存有多个书名时
    如有 123 456 789 这3个书名  当再次添加书名123会正常提示书名已存在 但当添加 书名456 和789时就不会提示书名已存在了。不知道为什么会出现这个问题。  “mindsky(超然) ” 的方法功能是实现了,但是这种定义变量的方法我也想到了,变量定义太多不好。我最后自己想了半天 忽然觉得自己很SB 其实在foreach里的判断加个return就行了。 呵呵    protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (TextBox1.Text.Trim() == "")
            {
                Response.Write("请输入书名!");
            }
            else
            {
                
                foreach (ListItem li in ListBox1.Items)
                {
                    if (li.Text == TextBox1.Text.Trim())
                    {
                        Response.Write("该书已存在!");
                        return;
                    }
                }
                //运行到这 肯定就是没有相同书名了。
                ListBox1.Items.Add(TextBox1.Text.Trim());
                Response.Write("添加成功!");
            }
        }