读书人

dropdownlist二级联动 的指向有关问题

发布时间: 2011-12-14 23:20:17 作者: rapoo

dropdownlist二级联动 的指向问题?
我做了一个二级联动,运行的时候,要的功能是做出来了.可是,当我选择第一个Dropdownlist1 的值时,第二个Dropdownlist2 所取的值永远是 其在类 的第一个值.例如: 大类有: 广东 广西
小类分别有:广州、深圳、东莞 南宁、桂林、柳州
当我选择广东的时候,无论我选深圳还是广州,提交数据后,得到的Dropdownlist2的值永远是 广州。
同理:选择广西后,无论选的是柳州,还是桂林,得到的永远是南宁。这是为什么啊?要在代码中,加入什么才能指向所指定的数据呢?

代码如下:
<%@ Import Namespace= "System.Data " %>
<%@ Import Namespace= "System.Data.OleDb " %>
<%@ import namespace= "System.IO " %>

<script language= "vb " runat= "server ">

Dim Myds As DataSet
Sub Page_Load(sender as object, e as Eventargs)
dim conn as new oledbconnection()
conn.connectionstring= "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= " & server.MapPath( "../db/data.mdb ")
conn.open()
Dim strSql As String
strSql= "select * from category order by categoryid "
Dim MyoleAp As OleDbDataAdapter = New OleDbDataAdapter(strSql,conn)
Myds=New DataSet()
MyoleAp.Fill(Myds, "category ")
If (Not IsPostBack) Then
category.DataSource=Myds.Tables( "category ")
category.DataValueField= "categoryid "
category.DataTextField= "category "
category.DataBind()

category.Items.Add( new ListItem( "请选择 ", "-1 " ) )
End If


session( "selectedvalue ")=category.SelectedValue
strSql= "select * from sortsid order by sortsid "
MyoleAp.SelectCommand.CommandText=strSql
MyoleAp.Fill(Myds, "sortsid ")
sorts.DataSource=Myds.Tables( "sortsid ")
sorts.DataValueField= "sortsid "
sorts.DataTextField= "sorts "
MyoleAp.Dispose()
sorts.Items.Add( new ListItem( "请选择 ", "-1 " ) )

conn.close()


‘------------显示各值-----------
response.write(session( "selectedvalue ") )
response.Write(session( "selectedvalue2 "))

End Sub

'--------DropDownList1的changed改变dorpdownlist2的显示值.----------

Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
Myds.Tables( "sortsid ").DefaultView.RowFilter= "categoryid= ' " & session( "selectedvalue ") & " ' "


sorts.DataBind()
session( "selectedvalue2 ")=sorts.SelectedValue

End Sub


</script>
<略>
<form runat= "server " >
<asp:DropDownList ID= "category " OnSelectedIndexChanged= "DropDownList1_SelectedIndexChanged " AutoPostBack= "true " runat= "server " />
<p>   </p>
<asp:DropDownList ID= "sorts " AutoPostBack= "true " runat= "server " />
</form>
<略>



[解决办法]
<%@ Page Language= "VB " %>
<%@ Import Namespace= "System.Data " %>
<%@ Import Namespace= "System.Data.OleDb " %>
<%@ import namespace= "System.IO " %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN " "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">

<script runat= "server ">

Dim Myds As DataSet
Sub Page_Load(sender as object, e as Eventargs)
Dim conn As New OleDbConnection()
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= " & Server.MapPath( "data.mdb ")
conn.Open()
Dim strSql As String
strSql = "select * from category order by categoryid "
Dim MyoleAp As OleDbDataAdapter = New OleDbDataAdapter(strSql, conn)
Myds = New DataSet()
MyoleAp.Fill(Myds, "category ")
If (Not IsPostBack) Then
category.DataSource = Myds.Tables( "category ")
category.DataValueField = "categoryid "
category.DataTextField = "category "
category.DataBind()
category.Items.Add(New ListItem( "请选择 ", "-1 "))
sorts.Items.Add(New ListItem( "请选择 ", "-1 ")) ' 这两句移动到这里
category.SelectedIndex = 2 ' 加上这一句
End If

Session( "selectedvalue ") = category.SelectedValue
strSql = "select * from sortsid order by sortsid "
MyoleAp.SelectCommand.CommandText = strSql
MyoleAp.Fill(Myds, "sortsid ")
sorts.DataSource = Myds.Tables( "sortsid ")
sorts.DataValueField = "sortsid "
sorts.DataTextField = "sorts "
MyoleAp.Dispose()
conn.Close()

' ------------显示各值-----------
Response.Write(Session( "selectedvalue ") & " ")
Response.Write(Session( "selectedvalue2 "))

End Sub

' --------DropDownList1的changed改变dorpdownlist2的显示值.----------
Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
Myds.Tables( "sortsid ").DefaultView.RowFilter = "categoryid= ' " & Session( "selectedvalue ") & " ' "
sorts.DataBind()
Session( "selectedvalue2 ") = sorts.SelectedValue
Label1.Text = sorts.SelectedValue ' 加入这一句
End Sub

Protected Sub sorts_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
Label1.Text = sorts.SelectedValue


End Sub
</script>

<html xmlns= "http://www.w3.org/1999/xhtml " >
<head runat= "server ">
<title> Untitled Page </title>
</head>
<body>
<form id= "form1 " runat= "server ">
<div>
<asp:DropDownList ID= "category " OnSelectedIndexChanged= "DropDownList1_SelectedIndexChanged " AutoPostBack= "true " runat= "server " />
<asp:DropDownList ID= "sorts " AutoPostBack= "true " runat= "server " OnSelectedIndexChanged= "sorts_SelectedIndexChanged " /> <br />
<asp:Label ID = "Label1 " runat = "server " />
</div>
</form>
</body>
</html>

读书人网 >VB Dotnet

热点推荐