DropDownList二级联动问题
我页面上有两个DropDownList控件,,两个控件的数据都是从数据库里读取出来的,,DropDownList2是DropDownList1控件触发来显示的,,但我把两个控件上选择的值传到服务器上的时候DropDownList2读入进去只是第一项,,我先其他项也是第一项读进数据库。。请问这是什么原因。。代码如下。。。
Sub Page_Load(sender As Object, e As EventArgs)
if not ispostback then
dpbind()
end if
end sub
sub dpbind()
Dim sqlstr, aa As String
conn.open()
sqlstr="select * from dg1"
dim cmd as new OleDbCommand(sqlstr,conn)
dim sdr as OleDbDataReader = cmd.ExecuteReader()
DropDownList1.Items.Add(New ListItem("请选择大类",""))
DropDownList2.Items.Add(new ListItem("请选择小类", ""))
While sdr.Read()
DropDownList1.Items.Add(New ListItem(sdr("datag").ToString(),sdr("dataid").ToString()))
End While
sdr.Close()
conn.Close()
end sub
Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
dim sqlstr as string
if DropDownList1.SelectedValue <> "" then
Dim cmd As New OleDbCommand("select * from dg2 where dgid =" & DropDownList1.SelectedValue & "", conn)
conn.Open()
dim dr as OleDbDataReader = cmd.ExecuteReader()
DropDownList2.DataSource = dr
DropDownList2.DataTextField = "datag2"
DropDownList2.DataValueField = "dgid"
DropDownList2.DataBind()
conn.Close()
else
RegisterStartupScript("aa","<script>alert('请选择大类');" + "</" + "script>")
end if
End Sub
Sub Enter_Click(Sender As Object, E As EventArgs)
dim aa, bb as string
aa = DropDownList1.SelectedItem.Text
bb = DropDownList2.SelectedItem.Text
Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("data/khgl.mdb"))
Dim sql, times As String
sql = "insert into namelist(name,age,sex,phone,email,address,dg1,dg2,type,subtime) values('" & TextBox1.text & "','" & TextBox2.text & "','" & RadioButtonList.selecteditem.text & "','" & TextBox9.text & "','" & TextBox4.text & "','" & TextBox3.text & "','" & aa & "','" & bb & "','" & TextBox6.text & "','" & now() & "')"
Dim cmd As New OleDbCommand(sql, conn)
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
TextBox1.text = ""
TextBox2.text = ""
TextBox3.text = ""
TextBox4.text = ""
TextBox6.text = ""
TextBox9.text = ""
RegisterStartupScript("aa","<script>alert('客户资料添加成功!');" + "</" + "script>")
End Sub
------解决方案--------------------原因如下
你选DropDownList1是一个服务器端事件,并且是立刻回传把DropDownList2给动态填充的,而DropDownList2的选择是客户端事件,因此读出来的是填充的时候默认的第一项是被选值
用Request.form来获取DropDownlist2的取值就好了