我现在做两个下拉框,
第二个下拉框的内容从第一个下拉框内选择得到的
比如第一个dropdownlist里面有三个值 a,b,c 我选择b后触发第一个dropdownlist的事件,在这个事件里面我根据选择的内容加载第二个dropdownlist,第二个里面有1,2,3,4,5,6,7,8,9九个值
问题在于,当我点击提交按钮的时候,得到的是第二个里面的值为1,不管我怎么选择第二个下拉框里面的任何值,当我点击按钮的时候得到的都是排在第一个的值1
这是怎么回事呢
紧急求助
第二个下拉框的内容从第一个下拉框内选择得到的
比如第一个dropdownlist里面有三个值 a,b,c 我选择b后触发第一个dropdownlist的事件,在这个事件里面我根据选择的内容加载第二个dropdownlist,第二个里面有1,2,3,4,5,6,7,8,9九个值
问题在于,当我点击提交按钮的时候,得到的是第二个里面的值为1,不管我怎么选择第二个下拉框里面的任何值,当我点击按钮的时候得到的都是排在第一个的值1
这是怎么回事呢
紧急求助
就是说:
当你提交之后,又重新绑定了第二个下拉框!
看看是不是IsPostBack的问题?
第二个加属性AutoPostBack = "true"
IsPostBack里面:
绑定第一个下拉框
第一个下拉框的SelectedIndexChanged事件里:
根据第一个下拉框所选择的邦定第二个瞎啦框其中第一个是AutoPostBack
我加上后在选择第二个下拉框的时候,就怎么也选择不住里面的值里,不管你怎么选择第二个里面的值,第二个都会出现值为1不加吧,起码可以选择第二个值里面的内容
2、把控件删除重新加载一个看看还有这个问题没有?
3、贴出来代码
{
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+"");//这个里面的值不会变老是第二个下拉框内排列第一个值
}
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+"");//这个里面的值不会变老是第二个下拉框内排列第一个值
}
小沟里面翻船来者加分
if(this.IsPostBack)
return;然后把断点设置在上面那句代码和 B_sure_Click里面那句代码,
一直监视D3.SelectedItem.Text、D3.SelectedValue、D3.SelectedIndex这3个值看看有没有不对劲的地方
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();
}
}