这是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个之后就乱了呢?还请高手多指教.....谢谢.
{ 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个之后就乱了呢?还请高手多指教.....谢谢.
Response.Write("<script>alert('"+ Request["shen"] + "')</script>");
//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);
{
Response.Write("<script>alert('"+shen.SelectedItem.Text+"')</script>");
}点击listbox中的前40个提示信息都是正常的,但是点击40个以后的提示的信息都是错的.明明选择的是点击"香港",提示的信息却是"辽宁".弄得我很郁闷.
------------------------------------------------------
这几句代码也没看出什么问题,要是listbox中有"香港"这一项的话,选了就应该出现"香港"的,单独测试没看出什么问题,你也许要从数据库取数那找找原因了.另外,要将listBox的AutoPostBack ="true" 设一下, 要不可能显示的还是原来的数据
<option value="1">北京市</option>
<option value="2">上海市</option>
<option value="3">天津市</option>
...
<option value="322">香港行政区</option>
<option value="323">澳门行政区</option>
原始是 value出現問題 正如樓上所說
在數據庫中給ID號加一個前綴, OK了
我觉得应该先把所有的省和市都一次性的拿出来
然后再添加省的时候用DataTable.Select()方法查找市
这样不用每次添加市都去读数据库添加的时候用
ListItem li=new ListItem(s[1].ToString(),s[0].ToString());
shen.Items.Add (li);
这种好点从你的代码里面看不出什么问题
你可以看看value是否唯一~~~~~~~