一般将这种东西放在数据库中再调出来是因为表之间有关连。数组怎么能有关连呢?我是不知道。
你是不是考虑用有键值对的Hashtable和SortedList

解决方案 »

  1.   

    因为不想每次选择的时候都访问一下数据库,所以才想到了用数组,可是我也觉得好像数组不是很合适,看了以前的帖子,有大虾建议用xml,但是就是不知道该怎么组织xml文件,给个提示吧,谢谢
      

  2.   

    我是用的数据库,一次读出所有省市数据,然后用js代码写入脚本,不过网上有很多下拉列表框省市联动的例子,不用这么复杂,如:
    这个是用XML实现联动的
    http://dev.csdn.net/article/38/38963.shtm
    如果想在客户端用数组的话,可以参考这个
    http://www.e-cn-e.com/java/6/27.htm
      

  3.   

    谢谢ma_ta,
    我还是想问一下,如果是在服务器端用C#来写的话,该怎么做呢?运行在服务器端的话是不是很占用服务器的资源呢?
      

  4.   

    算了,我还是用javascript来实现吧,如果用服务器控件会比较耗资源的
      

  5.   

    如果要在服务器端写的话,下面是部分页面Html代码和c#后台代码:
    <SELECT id="STATE" style="Z-INDEX: 105; LEFT: 264px; WIDTH: 152px; POSITION: absolute; TOP: 40px"
    onchange="provChanged(selectedIndex)" name="STATE" runat="server">
    </SELECT>
    <SELECT id="CITY" style="Z-INDEX: 107; LEFT: 488px; WIDTH: 152px; POSITION: absolute; TOP: 40px"
    name="CITY" runat="server">
    </SELECT>private void LoadStateCity()
    {
    DB2Conn db=new DB2Conn();
    string strSQL1="select * from STATE";
    string strSQL2="select * from CITY ORDER BY STATECODE";
    DataSet dsSTATE = db.GetData(strSQL1);
    DataSet dsCITY = db.GetData(strSQL2);
    string scriptStr="<script defer>\n";
    string ar1="var ar1 = [";  
    string ar2="var ar2 = [";
    DataView dvCITY = new DataView(dsCITY.Tables[0]);
    for(int i=1;i<=dsSTATE.Tables[0].Rows.Count;i++)
    {
    ar1=ar1+"[['"+dsSTATE.Tables[0].Rows[i-1]["STATECODE"]+"'],[";
    ar2=ar2+"[['"+dsSTATE.Tables[0].Rows[i-1]["STATENAME"]+"'],[";
    dvCITY.RowFilter = "[STATECODE] ="+dsSTATE.Tables[0].Rows[i-1]["STATECODE"];
    foreach(DataRowView Row in dvCITY)
    {
    ar1=ar1+"'"+Row["CITYCODE"]+"',";
    ar2=ar2+"'"+Row["CITYNAME"]+"',";
    }
    ar1=ar1.Substring(0,ar1.Length-1);
    ar2=ar2.Substring(0,ar2.Length-1);
    ar1=ar1+"]],";
    ar2=ar2+"]],";
    }
    ar1=ar1.Substring(0,ar1.Length-1);
    ar2=ar2.Substring(0,ar2.Length-1);
    ar1=ar1+"];\n";
    ar2=ar2+"];\n";
    scriptStr=scriptStr+ar1+"\n"+ar2+"\n";
    scriptStr=scriptStr+"for (var i=0;i<ar1.length;i++)\n";
    scriptStr=scriptStr+"ManaNews.STATE.options[ManaNews.STATE.options.length]=new Option(ar2[i][0],ar1[i][0])\n";
    scriptStr=scriptStr+"function provChanged(i)\n";
    scriptStr=scriptStr+"{\n";
    scriptStr=scriptStr+"ManaNews.CITY.innerHTML=''\n";
    scriptStr=scriptStr+"for (var j=0;j<ar1[i][1].length;j++)\n";
    scriptStr=scriptStr+"ManaNews.CITY.options[ManaNews.CITY.options.length]=new Option(ar2[i][1][j],ar1[i][1][j])\n";
    scriptStr=scriptStr+"}\n";
    scriptStr=scriptStr+"provChanged(0);\n";
    scriptStr=scriptStr+"</script>\n";
    Response.Write(scriptStr);
    }
    数据库相关表结构如下:
    省份(STATE):
    省份编码 STATECODE
    省份名称 STATENAME
    城市(CITY):
    城市编码 CITYCODE
    省份编码 STATECODE
    城市名称 CITYNAME取值用这个:
    Textbox2.Text=Request.Form["STATE"] + Request.Form["CITY"];