注册 登录
编程论坛 ASP.NET技术论坛

为什么我的下拉框不能连动啊?

yunj1105 发布于 2007-06-05 16:40, 2668 次点击
<asp:DropDownList ID="drp_dept" runat="server" DataTextField="dept_name" DataValueField="dept_ID" OnSelectedIndexChanged="drp_dept_SelectedIndexChanged">
</asp:DropDownList> <asp:DropDownList ID="drp_major" runat="server" Width="115px" DataTextField="major_name" DataValueField="major_ID">
</asp:DropDownList>

protected void drp_dept_SelectedIndexChanged(object sender, EventArgs e)
{
string str_dr2 = "select * from lab_major where dept_ID='"+drp_dept.SelectedValue.ToString()+"'";
co_class_add.dr_Bind(str_dr2,drp_major);
drp_major.DataBind();
}

[此贴子已经被作者于2007-6-5 16:51:47编辑过]

36 回复
#2
川流不息2007-06-05 16:42

是有錯誤呢還是什麼原因?

#3
yunj11052007-06-05 16:46
也不提示错误 就是点了drp_dept这个下拉框后 没任何反应
#4
川流不息2007-06-05 16:47
你的是不是刷新聯動?
#5
yunj11052007-06-05 16:49

恩 好象有点头绪了 我去看看

#6
川流不息2007-06-05 16:51
你看drp_dept這個下拉框的綁定是不是放在Page_Load的If(!IsPostBack){裡面}
#7
yunj11052007-06-05 16:52
是的
#8
川流不息2007-06-05 16:53
你斷點跑一下,整個流程能不能跑下來。包括你的SQL語句。
#9
yunj11052007-06-05 16:53
好的
#10
yunj11052007-06-05 16:58
结果是点了下拉框还是没反应,但在点了确认button时(确认是将我填写的东西提交)
就又跳到page_load函数了,之后才跳到protected void drp_dept_SelectedIndexChanged(object sender, EventArgs e)

[此贴子已经被作者于2007-6-5 17:01:05编辑过]

#11
川流不息2007-06-05 16:59
這流程沒錯,你把
protected void drp_dept_SelectedIndexChanged(object sender, EventArgs e)
{
string str_dr2 = "select * from lab_major where dept_ID='"+drp_dept.SelectedValue.ToString()+"'";
co_class_add.dr_Bind(str_dr2,drp_major);
drp_major.DataBind();
}
裡面的co_class_add.dr_Bind(str_dr2,drp_major);這個方法拿出來我看看。
#12
川流不息2007-06-05 17:00
Page_Load裡面的代碼也貼出來看看。
#13
川流不息2007-06-05 17:01
你有選擇的時候,是兩個下拉框都沒有變呢?還是改變選擇的那個變了,而連動的那個沒變?
#14
yunj11052007-06-05 17:03
public void dr_Bind(string strCmd, DropDownList dr)
{
SqlDataAdapter adp = new SqlDataAdapter(strCmd, myConnection);
DataSet ds = new DataSet();
adp.Fill(ds);
dr.DataSource = ds;
return;
}

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string str_dept = "select * from lab_dept";
string str_major = "select * from lab_major";
string str_grade = "select * from lab_grade";
co_class_add.dr_Bind(str_dept, drp_dept);
drp_dept.DataBind();
co_class_add.dr_Bind(str_major, drp_major);
drp_major.DataBind();
co_class_add.dr_Bind(str_grade, drp_grade);
drp_grade.DataBind();
if (Request["Action"] == "edit")
{
string num = Request["Class_num"];
string sqlstr = "select * from lab_class where class_num like " + num + "";
SqlConnection sqlconn = new SqlConnection(ConfigurationManager.ConnectionStrings["labConnectionString"].ConnectionString);
SqlDataAdapter da = new SqlDataAdapter(sqlstr, sqlconn);
DataSet ds = new DataSet();
da.Fill(ds);
txt_class.Text = ds.Tables[0].Rows[0]["class_ID"].ToString();
txt_num.Text = ds.Tables[0].Rows[0]["class_stunum"].ToString();
txt_bizhu.Text = ds.Tables[0].Rows[0]["class_bizhu"].ToString();
drp_dept.SelectedValue = ds.Tables[0].Rows[0]["dept_ID"].ToString();
drp_major.SelectedValue = ds.Tables[0].Rows[0]["major_ID"].ToString();
drp_grade.SelectedValue = ds.Tables[0].Rows[0]["class_grade"].ToString();
}
}
}
#15
川流不息2007-06-05 17:05
public void dr_Bind(string strCmd, DropDownList dr)
{
SqlDataAdapter adp = new SqlDataAdapter(strCmd, myConnection);
DataSet ds = new DataSet();
adp.Fill(ds);
dr.DataSource = ds;

/*******
你這還有兩個屬性呢?
/*********
return;
}
#16
yunj11052007-06-05 17:07

放到程序里绑定了

#17
川流不息2007-06-05 17:07

drpTown.DataSource=DS1.Tables["城鎮名稱"];
drpTown.DataTextField="TownName";//顯示的字段
drpTown.DataValueField="TownCode";//值的字段
drpTown.DataBind();
#18
川流不息2007-06-05 17:12
我沒有看到你那兩個屬性賦值,肯定是這裡你漏了,然後你在selectvalue根本得不到值。
#19
yunj11052007-06-05 17:14
可我在程序里写了啊你看
<asp:DropDownList ID="drp_dept" runat="server" Width="115px" DataTextField="dept_name" DataValueField="dept_ID" OnSelectedIndexChanged="drp_dept_SelectedIndexChanged">
</asp:DropDownList>
<asp:DropDownList ID="drp_major" runat="server" Width="115px" DataTextField="major_name" DataValueField="major_ID">
</asp:DropDownList>
#20
川流不息2007-06-05 17:17
咦,這裡我還沒看到。你這樣,你跟蹤到那個SQL語句,看那個drp_dept的SelectedValue的值是不是正確的。
#21
yunj11052007-06-05 17:20
恩 我想知道 为什么这个函数不是在下拉框选项变了时触发,而是点了button后触发啊?
#22
川流不息2007-06-05 17:20

你等一下,我覺得有問題。我理清一下思路。

#23
yunj11052007-06-05 17:21
好的
#24
川流不息2007-06-05 17:24
我曉得了,你的控件的屬性沒有設。
#25
川流不息2007-06-05 17:25
你那個drp_dept的服務器事件響應沒有設為true
#26
yunj11052007-06-05 17:27
怎么设啊?
#27
川流不息2007-06-05 17:29
AutoPostBack屬性
#28
yunj11052007-06-05 17:31
好 这就去设
#29
yunj11052007-06-05 17:34

好了

#30
川流不息2007-06-05 17:38
原來,只是這麼一個小問題,結果大張旗鼓。還好,弄明白了。
#31
yunj11052007-06-05 17:40

呵呵 要我自己估计着辈子是找不出问题来了

#32
xyl_richard2007-06-05 19:13
你在定义DropDownList时没有将属性autopost设置为true.
#33
qittdgd2007-06-08 14:13
<asp:DropDownList ID="lisPageIndex" runat="server" AutoPostBack="True">
</asp:DropDownList>
少了这个:AutoPostBack="True"
#34
qittdgd2007-06-08 14:14
有人说了.我真是多余了
#35
hoya2007-06-08 14:30

联动的上一级的dropdownlist要设 PostBack 为true

#36
xiaochao_hou2007-07-07 17:07
是不是沒設定AutoPostBack
#37
lmedia2007-07-12 12:48

这个问题我还见过,好像是dropdownlist有时候 存在这个问题,不过你可以换成select试式

1