<div class="divStyle1 " align="left"> 
        <div class="divStyle1" align="left" style="font-size:small">选择商品省市:</div>
         <asp:DropDownList ID="dropProv" runat="server" AutoPostBack="True" 
           onselectedindexchanged="dropProv_SelectedIndexChanged">
         </asp:DropDownList> 
         <asp:DropDownList ID="dropCity" runat="server" AutoPostBack="True" 
           onselectedindexchanged="dropCity_SelectedIndexChanged"  >
         </asp:DropDownList>
         </div> public void bindProvince()
    {        //dropdownlist的省份选择
        try
        {
            string connString = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];
            SqlConnection cn = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand("select * from Province", cn);
            SqlDataAdapter ada = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            ada.Fill(ds, "Province");
            dropProv.DataSource = ds.Tables["Province"].DefaultView;
            dropProv.DataValueField = "Prov_ID";
            dropProv.DataTextField = "Prov_Name";
            dropProv.DataBind();
            dropProv.Items.Insert(0, new ListItem("==请选择==", ""));
           
        }
        catch  
        {
            
        }    }
    protected void dropProv_SelectedIndexChanged(object sender, EventArgs e)
    {//dropdownlist的市级选择        try
        {
            int aa = Convert.ToInt32(dropProv.SelectedValue.ToString());
            string connString = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];
            SqlConnection cn = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand("select * from City where Prov_ID=@proid", cn);
            cmd.Parameters.Add("@proid", SqlDbType.Int).Value = aa;
            SqlDataAdapter dap = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            dap.Fill(ds, "City");
            dropCity.DataSource = ds.Tables["City"].DefaultView;
            dropCity.DataValueField = ds.Tables["City"].Columns[0].ColumnName;
            dropCity.DataTextField = ds.Tables["City"].Columns[1].ColumnName;
            dropCity.DataBind();
            dropCity.Items.Insert(0, new ListItem("==请选择==", ""));
        }
        catch  
        {
            
        }}
    上面是问题的代码,省份数据已经绑定上了,但是选择完省份之后就出现“输入字符串的格式不正确”,我打断点执行之后看到没有值,就是说选择完省份之后没传递过去值     
求问怎么弄啊????我弄了好多方法都不行

解决方案 »

  1.   

    int aa = Convert.ToInt32(dropProv.SelectedItem.Value.ToString());
      

  2.   

    运行到这句代码:
    int aa = Convert.ToInt32(dropProv.SelectedValue.ToString());就开始报错
      

  3.   

    string aa=dropProv.SelectedValue;   看看这个aa是什么  
      

  4.   

    应该不会的吧?除非你字段中有空格将省数据绑定调整成如下顺序:
    dropProv.DataValueField = "Prov_ID";
    dropProv.DataTextField = "Prov_Name";
     dropProv.DataSource = ds.Tables["Province"].DefaultView;
    dropProv.DataBind();
    int aa = Convert.ToInt32(dropProv.SelectedItem.Value.ToString().Trim());
      

  5.   

    dropCity.DataValueField = ds.Tables["City"].Columns[0].ColumnName;
    dropCity.DataTextField = ds.Tables["City"].Columns[1].ColumnName;
    这里插入的都是String类型的,报错应该在选择市这里
      

  6.   

    dropProv.SelectedItem.Value和dropProv.SelectedValue应该都可以的、  你确定value绑定到数据了? 你跟踪方法bindProvince()看查询返回的什么数据 "Prov_ID"有值么、
      

  7.   

    public void bindProvince()
    这个绑定的方法你放在哪儿的?protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                bindProvince();
            }
        }
      

  8.   

    changed事件最好加判断,若选择第一项,你怎么转换,肯定报错,解决如:
    dropdownlist1.Items.Insert(0, new ListItem("==请选择==", "0"));
    此外检查下Prov_ID类型,是否可转换
      

  9.   


    哦,自动发回服务器后页面不是第一次进入了,所以bindProvince()没再执行
      

  10.   

    直接在dropdownlist 里加入“==请选择==”  然后再绑定数据  设置绑定数据不清空原始数据
      

  11.   

    dropdownlist1.Items.Insert(0, "==请选择==");
    这样
      

  12.   

    protected void Page_Load(object sender, EventArgs e)
    {
       if (!IsPostBack)
       {
            bindProvince();
       }
    }  如果方法没放在load事件里面 你选择提交后 提交的会是"==请选择=="对应的value 空值...
      

  13.   

    2级联动?直接 int aa = int.Parse(Request["dropProv"]); 不就行了么,一定要放在if(!IsPostBack){}里面绑定数据的时候
      

  14.   

      dropProv.Items.Insert(0, new ListItem("==请选择==", ""));当下拉框绑定数据后,再使用insert方法时,系统会默认插入的项为当前的选择项,你下面在把它强制转成int时肯定会错的。
    还有下次转int类型是,请用int.TryParse方法
      

  15.   

     if (!IsPostBack)没有加这个判断   再没有ajax局部更新  再发回给客户端的时候   SelectValue是你最后现价的那个index为0的  Item   它的value是""