我现在做两个下拉框,
第二个下拉框的内容从第一个下拉框内选择得到的
比如第一个dropdownlist里面有三个值 a,b,c  我选择b后触发第一个dropdownlist的事件,在这个事件里面我根据选择的内容加载第二个dropdownlist,第二个里面有1,2,3,4,5,6,7,8,9九个值
问题在于,当我点击提交按钮的时候,得到的是第二个里面的值为1,不管我怎么选择第二个下拉框里面的任何值,当我点击按钮的时候得到的都是排在第一个的值1
这是怎么回事呢
紧急求助

解决方案 »

  1.   

    很有可能是重复绑定的问题!
    就是说:
    当你提交之后,又重新绑定了第二个下拉框!
    看看是不是IsPostBack的问题?
      

  2.   

    第二个加属性AutoPostBack = "true"
      

  3.   

      AutoPostPack 问题
      
    第二个加属性AutoPostBack   =   "true"
      

  4.   

    Page_Load:
      IsPostBack里面:
      绑定第一个下拉框
    第一个下拉框的SelectedIndexChanged事件里:
     根据第一个下拉框所选择的邦定第二个瞎啦框其中第一个是AutoPostBack
      

  5.   

    第二个不能加AutoPostBack       =       "true" 
    我加上后在选择第二个下拉框的时候,就怎么也选择不住里面的值里,不管你怎么选择第二个里面的值,第二个都会出现值为1不加吧,起码可以选择第二个值里面的内容
      

  6.   

    1、IsPostback,可能性很大!
    2、把控件删除重新加载一个看看还有这个问题没有?
    3、贴出来代码
      

  7.   

    need your code ,then we can find the bug。
      

  8.   

    private void Page_Load(object sender, System.EventArgs e)
    {
    strDropDownListSum2();
    }void strDropDownListSum2()
    {
    if(DropDownListSwitch2=="1")
    {
        D5.Visible=true;
    string[] arr_ddl=DropDownListSum2.Split(',');
    for(int iddl=0;iddl<arr_ddl.Length;iddl++)
    {
    string ddl_name=arr_ddl[iddl].Split('|')[0];
    string ddl_list=arr_ddl[iddl].Split('|')[1];
    string ddl_listname=ddl_list.Split('=')[1];
    string ddl_widtth=ddl_list.Split('=')[0];

    string[] ddl_value=ddl_listname.Split(';');
                                            D5.Width=Convert.ToInt32(ddl_widtth);
    D5.Items.Add(new ListItem("",""));
    for(int ivalue=0;ivalue<ddl_value.Length;ivalue++)
    {
    string ddl_left=ddl_value[ivalue].Split(':')[0];
    string ddl_right=ddl_value[ivalue].Split(':')[1];
    D5.Items.Add(new ListItem(""+ddl_left+"",""+ddl_right+""));
    }
    }
    }
    }
    private void D5_SelectedIndexChanged(object sender, System.EventArgs e)
    { string StrWhere="";
                     D3.Visible=true;
    D5.Visible=true;
    if(DropDownListSum2Limit!="")
    {
    this.Panel5.FindControl("D2")).SelectedItem.Value+"";
    StrWhere="  where "+DropDownListSum2Limit+"  group by "+D5.SelectedItem.Value+"";}
    SqlConnection conn=new SqlConnection(System.Configuration .ConfigurationSettings .AppSettings ["ConnectionString"]);
    string sql="select "+D5.SelectedItem.Value+" as D  from "+strtablename+"   "+StrWhere+" ";
    SqlCommand cmd=new SqlCommand(sql,conn);
    SqlDataReader rd;
    conn.Open();
    rd=cmd.ExecuteReader();
    while(rd.Read())
    {
                   D3.Items.Add(new ListItem(""+rd["D"].ToString()+"",""));
    }
    }private void B_sure_Click(object sender, System.EventArgs e)
    {
    Response.Write(""+D3.SelectedItem.Text+"");//这个里面的值不会变老是第二个下拉框内排列第一个值
    }
      

  9.   

    上面那个错了,不好意思
    private   void   Page_Load(object   sender,   System.EventArgs   e) 

    strDropDownListSum2(); 
    } void   strDropDownListSum2() 

    if(DropDownListSwitch2=="1") 

            D5.Visible=true; 
    string[]   arr_ddl=DropDownListSum2.Split(','); 
    for(int   iddl=0;iddl <arr_ddl.Length;iddl++) 

    string   ddl_name=arr_ddl[iddl].Split(' ¦')[0]; 
    string   ddl_list=arr_ddl[iddl].Split(' ¦')[1]; 
    string   ddl_listname=ddl_list.Split('=')[1]; 
    string   ddl_widtth=ddl_list.Split('=')[0]; string[]   ddl_value=ddl_listname.Split(';'); 
                                                                                    D5.Width=Convert.ToInt32(ddl_widtth); 
    D5.Items.Add(new   ListItem("","")); 
    for(int   ivalue=0;ivalue <ddl_value.Length;ivalue++) 

    string   ddl_left=ddl_value[ivalue].Split(':')[0]; 
    string   ddl_right=ddl_value[ivalue].Split(':')[1]; 
    D5.Items.Add(new   ListItem(""+ddl_left+"",""+ddl_right+"")); 




    private   void   D5_SelectedIndexChanged(object   sender,   System.EventArgs   e) 
    { string   StrWhere=""; 
    D3.Visible=true; 
    D5.Visible=true; 
    if(DropDownListSum2Limit!="") 
    { StrWhere="     where   "+DropDownListSum2Limit+"     group   by   "+D5.SelectedItem.Value+""; } 
    SqlConnection   conn=new   SqlConnection(System.Configuration   .ConfigurationSettings   .AppSettings   ["ConnectionString"]); 
    string   sql="select   "+D5.SelectedItem.Value+"   as   D     from   "+strtablename+"       "+StrWhere+"   "; 
    SqlCommand   cmd=new   SqlCommand(sql,conn); 
    SqlDataReader   rd; 
    conn.Open(); 
    rd=cmd.ExecuteReader(); 
    while(rd.Read()) 

                                  D3.Items.Add(new   ListItem(""+rd["D"].ToString()+"","")); 

    } private   void   B_sure_Click(object   sender,   System.EventArgs   e) 

    Response.Write(""+D3.SelectedItem.Text+"");//这个里面的值不会变老是第二个下拉框内排列第一个值 
    }
      

  10.   

    我加了if(!IsPostBack) 没有用的
      

  11.   

    问题解决了,第二个下拉框我没有赋values值,郁闷
    小沟里面翻船来者加分
      

  12.   

    没values。直接selectItem.Text不是一样
      

  13.   

    在Page_Load里面加上
    if(this.IsPostBack)
        return;然后把断点设置在上面那句代码和 B_sure_Click里面那句代码,
    一直监视D3.SelectedItem.Text、D3.SelectedValue、D3.SelectedIndex这3个值看看有没有不对劲的地方
      

  14.   

    首先
     private void Page_Load(object sender, System.EventArgs e)   
        {   
            strDropDownListSum2();   
        }   
    加if(!Page.IsPostBack)
    其次,下面事件里的代码能不能写成函数啊
     protected void  D5_SelectedIndexChanged(object sender, EventArgs e)
        {
            string       StrWhere="";   
                D3.Visible=true;   
                D5.Visible=true;   
                if(DropDownListSum2Limit!="")   
                {               StrWhere="           where       "+DropDownListSum2Limit+"           group       by       "+D5.SelectedItem.Value+"";               }   
                SqlConnection       conn=new       SqlConnection(System.Configuration       .ConfigurationSettings       .AppSettings       ["ConnectionString"]);   
                string       sql="select       "+D5.SelectedItem.Value+"       as       D           from       "+strtablename+"               "+StrWhere+"       ";   
                SqlCommand       cmd=new       SqlCommand(sql,conn);   
                SqlDataReader       rd;   
                conn.Open();   
                rd=cmd.ExecuteReader();   
                while(rd.Read())   
                {   
                                                                            D3.Items.Add(new       ListItem(""+rd["D"].ToString()+"",""));   
                }   
        }
    最后,你这个问题就是因为没有加if(!Page.IsPostBack)
     private void Page_Load(object sender, System.EventArgs e)   
        {   
            strDropDownListSum2();   
        }   
    换成
    private void Page_Load(object sender, System.EventArgs e)   
        {   if(!Page.IsPostBack)
    {
            strDropDownListSum2();   
    }
        }
      

  15.   

    你看看你是不是有  EnableViewState= false 有的话去掉就可以 ,一般出现在<@page>里面,你有母版页的话也可以查查看
      

  16.   

    还有就是看看控件的viewstate属性要为true
      

  17.   

    IsPostback 你 用Response.Write出来就知道了 一步一步测试
      

  18.   

    今早2点多录制的影片,不知是否有帮助:http://download.csdn.net/source/331627