这是listbox的初始化代码:其中,listbox的id为shen private void l()
{ string sql="select * from 省";
SqlDataReader s=p.ReadData(sql);
shen.Items.Clear ();
shen.Items.Add ("全国各省市");
shen.Items[0].Selected=true;
while(s.Read())
{
shen.Items.Add (s[1].ToString ());
shen.Items[shen.Items.Count-1].Value =s[0].ToString (); //下属市
sql="select * from 市 where 省_id="+s[0].ToString ();
SqlDataReader ss=p.ReadData(sql);
while(ss.Read())
{
shen.Items.Add (s[1].ToString ()+"."+ss["市名"].ToString ());
shen.Items[shen.Items.Count-1].Value =ss[0].ToString ();
} ss.Close ();
}
s.Close ();

}倒是正常显示出来了,全国的所有省市,共计有333条,但是我在进行以下代码测试时,问题就出来了.private void shen_SelectedIndexChanged(object sender, System.EventArgs e)
{
Response.Write("<script>alert('"+shen.SelectedItem.Text+"')</script>");
}点击listbox中的前40个提示信息都是正常的,但是点击40个以后的提示的信息都是错的.明明选择的是点击"香港",提示的信息却是"辽宁".弄得我很郁闷.为什么40个之前可以,40个之后就乱了呢?还请高手多指教.....谢谢.

解决方案 »

  1.   

    这样试试
    Response.Write("<script>alert('"+ Request["shen"] + "')</script>");
      

  2.   

    //问题到是没看出来,不过
    //shen.Items.Add (s[1].ToString ());
    //shen.Items[shen.Items.Count-1].Value =s[0].ToString ();//这样写是不更好点?
    ListItem li=new ListItem(s[1].ToString(),s[0].ToString());
    shen.Items.Add (li);
      

  3.   

    private void shen_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    Response.Write("<script>alert('"+shen.SelectedItem.Text+"')</script>");
    }点击listbox中的前40个提示信息都是正常的,但是点击40个以后的提示的信息都是错的.明明选择的是点击"香港",提示的信息却是"辽宁".弄得我很郁闷.
    ------------------------------------------------------
    这几句代码也没看出什么问题,要是listbox中有"香港"这一项的话,选了就应该出现"香港"的,单独测试没看出什么问题,你也许要从数据库取数那找找原因了.另外,要将listBox的AutoPostBack ="true" 设一下, 要不可能显示的还是原来的数据
      

  4.   

    唉,所以说是怪问题啊.前几项是"北京","上海","天津",点击"北京"提示就是"北京",但40项以后点击"香港",出来是辽宁的一个市,点击"澳门",出来的又是辽宁的另一个市.我认为这不是数据库的问题,因为listbox显示出来的效果是这样的:
    <option value="1">北京市</option>
    <option value="2">上海市</option>
    <option value="3">天津市</option>
    ...
    <option value="322">香港行政区</option>
    <option value="323">澳门行政区</option>
      

  5.   

    我也映遇到過這樣的問題.
    原始是 value出現問題 正如樓上所說
    在數據庫中給ID號加一個前綴, OK了
      

  6.   

    在初始化listbox的时候
    我觉得应该先把所有的省和市都一次性的拿出来
    然后再添加省的时候用DataTable.Select()方法查找市
    这样不用每次添加市都去读数据库添加的时候用
    ListItem li=new ListItem(s[1].ToString(),s[0].ToString());
    shen.Items.Add (li);
    这种好点从你的代码里面看不出什么问题
    你可以看看value是否唯一~~~~~~~