protected void getCtOption()
        {
            DM_Mgr mgr = new DM_Mgr(new DM_DZ());
            DataTable dtDz = mgr.GetDataTable();
            for (int i = 0; i < dtDz.Rows.Count; i++)
            {
                if ((dtDz.Rows[i]["DZ_DM"].ToString().Substring(2, 4) != ("0000")))
                {
                    //Response.Write("<option value='" + dtDz.Rows[i]["DZ_DM"].ToString() + "' > " + dtDz.Rows[i]["DZ_SM"].ToString() + " </option>");
                }
            }
        }这是我的一个在后台生成option的方法。现在我把//Response.Write(" <option value='" + dtDz.Rows[i]["DZ_DM"].ToString() + "' > " +  dtDz.Rows[i]["DZ_SM"].ToString() + " </option>"); 
这句注掉,改为生成一个Array,放在var Citys=new Array(放入生成的Array)。达成和var Citys=new Array( 
new Array("110100","北京"), 
new Array("120100","天津"), 
new Array("130101","石家庄"));一样的效果,按照我原来的方法该怎么做呢?          codeprotected void getCtOption()
        {
            DM_Mgr mgr = new DM_Mgr(new DM_DZ());
            DataTable dtDz = mgr.GetDataTable();
            for (int i = 0; i < dtDz.Rows.Count; i++)
            {
                if ((dtDz.Rows[i]["DZ_DM"].ToString().Substring(2, 4) != ("0000")))
                {
                    //在这里放入生成的Array的语句。
                }
            }
        }     并希望能有传值到前台的语句。例如:
      前台:
      <script language="javascript">
     var Citys=new Array(
     <%for(int i=0;i<city.Items.Count;i++){%>
     new Array('<%=city.Items[i].Value%>','<%=city.Items[i].Text%>')<%=i==city.Items.Count-1?"":","%>
     <%}%>);   
     </script>

解决方案 »

  1.   

    建议用json来传送这样的对象
    后台生成"{AllCity:[{Name:\"北京\",Value:\"1\"},{Name:\"上海\",Value:\"2\"},{Name:\"深圳\",Value:\"3\"}]}"这样的字符串
    其中[]中的是数组元素,AllCity是这个数组的键值,两边加上{}可以被js解析为json对象,
    前台js:
    <script>
    var citysJson = "{AllCity:[{Name:\"北京\",Value:\"1\"},{Name:\"上海\",Value:\"2\"},{Name:\"深圳\",Value:\"3\"}]}";
    var citys = eval("data="+citysJson);
    for(var i=0;i<citys.AllCity.length;i++)
    {
        alert(citys.AllCity[i].Name);
    }
    </script>
      

  2.   


    这个只有怎么传值,并没有说怎么生成Array啊!
      

  3.   

    不是吧,这个,不难的:
    protected void getCtOption()
            {
                DM_Mgr mgr = new DM_Mgr(new DM_DZ());
                DataTable dtDz = mgr.GetDataTable();
    StringBuilder sb = new StringBuilder("{AllCity:[");
                for (int i = 0; i < dtDz.Rows.Count; i++)
                {
                    if ((dtDz.Rows[i]["DZ_DM"].ToString().Substring(2, 4) != ("0000")))
                    {
    sb.Append("{");
    sb.Append("Name:\""+dtDz.Rows[i]["DZ_SM"].ToString()+"\",Value:\""+dtDz.Rows[i]["DZ_DM"].ToString()+"\"");
    sb.Append("},");
                        //Response.Write("<option value='" + dtDz.Rows[i]["DZ_DM"].ToString() + "' > " + dtDz.Rows[i]["DZ_SM"].ToString() + " </option>");
                    }
                }
    sb.Remove(sb.Length - 1, 1);//去掉最后一个逗号
    sb.Append("]}");
    hiddenCitys.value = sb.ToString();//hiddenCitys是页面上加了runat=Server的hidden控件
            }
      

  4.   

    汗,一定要有runat=Server吗?我原来的方法就是因为有runat=Server所以我不用了,能不能用纯粹的select静态html控件来实现?
      

  5.   

    能不能用纯粹的select静态html控件来实现?
    ===============
    我说的是放到<input type=hidden runat=server id=hiddenCitys />这个控件,有影响吗?
    如果真的不想用,那你用ajax好了,获取这段字符以后,操作select控件。