数据库某字段保存的为listbox的选项值(多选,值之间以#隔开。如#1#8#10#13),我用下面方法使listbox中对应值的选中。调试时listbox1.Items.Count总是为0,不知为何???
ListBox我是通过拖一个SqlDataSource直接绑定的,明明有多条记录!        protected void Page_Load(object sender, EventArgs e)
        {     
                if (!Page.IsPostBack)
                {
                    LoadInfomation();
                }
        }
        private void LoadInfomation()
        {
            ......
            string Chance_Type = news_info.companys.ToString();//Chance_Type是从数据库中取出的选项值,形如#1#8#10#13
            string[] arrStr = Chance_Type.Substring(1).Split('#');//值是以"#"隔开
            foreach (string str in arrStr)
            {
                for (int i = 0; i < listbox1.Items.Count; i++)//此句总为0,循环不能继续                {                    if (this.listbox1.Items[i].Value == str)
                    {
                        this.listbox1.Items[i].Selected = true;
                    }
                }
            }
          ...... 
        }

解决方案 »

  1.   

    是不是listbox1事先没有绑定值的原因?              foreach (string str in arrStr) 
                { 
                    int i = 0;
                    this.listBox1.Items.add(str);
                            this.listbox1.Items[i].Selected = true;
                     i++;
                    } 
                } 
      

  2.   

    protected void Page_Load(object sender, EventArgs e) 
    {    
    if (!Page.IsPostBack) 

    LoadInfomation(); 


    private void LoadInfomation() 

    ...... 
    string Chance_Type = news_info.companys.ToString();//Chance_Type是从数据库中取出的选项值,形如#1#8#10#13 
    string[] arrStr = Chance_Type.Substring(1).Split('#');//值是以"#"隔开 
    for(int i=1 ; i<arrStr.Length ; i++)
    {
    this.listbox1.add(arrStr[i]);
    }
    foreach (string str in arrStr) 

    for (int i = 0; i < listbox1.Items.Count; i++)//此句总为0,循环不能继续                {  if (this.listbox1.Items[i].Value == str) 

    this.listbox1.Items[i].Selected = true; 



    ...... 
    }
      

  3.   

    ListBox我是通过拖一个SqlDataSource直接绑定的,明明有多条记录!
      

  4.   

    建议查一下listbox的各个item 是否正确绑定了,感觉要么sqlDateSource里面没读进来,要么item没添加
      

  5.   

    那就可能是你设定的sqlDateSource的内容,在执行上面的函数的时候,还没有绑定上去
      

  6.   

    没看你往listbox1.Items里加过数据么,如果你不是ajax,listbox1.Items到内容每次页面刷新的时候都要重新填
      

  7.   

    应该正确绑定了,调试结果listbox各项都能显示出来,只是数据库中那些项没有被选中!
      

  8.   

    for(int i=1 ; i<arrStr.Length ; i++)
                {
                    this.listbox1.add(arrStr[i]);            }
    这句不对吧。this.listbox1.Items.Add(arrStr[i]);
      

  9.   

    是啊!就是正如5楼兄弟所说。
    自己写了个方法,放在LoadInfomation()之前就可以了!
      

  10.   

    8 楼说的对,2楼的代码确实要this.listbox1.Items.Add(arrStr[i]);
    谢谢各位!问题解决。