首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

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

2011-12-14 
dropdownlist二级联动 的指向问题?我做了一个二级联动,运行的时候,要的功能是做出来了.可是,当我选择第一

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> &nbsp; </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>

热点排行