Remplissage DropDownList en fonction d'une autre DropDownList ASP.NET VB.NET
Bonjour,
Je suis actuellement en train de developper un portail de suivi d'incidents en ASP.NET (VB.NET) avec une base ACCESS de test.
Je bloque sur un point.
Je m'explique :
J'ai 2 DropDownList. Une "DropDownListPays" et une "DropDownListSite".
Un pays peut contenir plusieurs sites. J'aimerais que lorsque je sélectionne un pays dans la DDL Pays, seulement les sites qui se trouvent dans le Pays selectionné apparaissent dans la DDL Site sans pour autant recharger toute la page.
Pour la partie rechargement partiel de la page j'utilise un updatepanel et un trigger dans le .ASPX (cette partie semble marcher convenablement ).
Pour la partie remplissage de la DDL Site en fonction de la DDL Pays j'utilise des dataset dans le .ASPX.VB
code :
.ASPX
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Incidents.aspx.vb" Inherits="Incidents" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Incidents</title>
</head>
<body>
<form id="formIncidents" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Label ID="LabelPays" runat="server" Text="Pays :"></asp:Label>
<asp:DropDownList ID="DropDownListPays" runat="server" AutoPostBack="true"></asp:DropDownList></td>
<asp:Label ID="LabelSite" runat="server" Text="Site :"></asp:Label>
<asp:UpdatePanel ID="UpdatePanelDDLSite" UpdateMode="Conditional" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger controlid="DropDownListPays" eventname="SelectedIndexChanged" />
</Triggers>
<ContentTemplate>
<asp:DropDownList ID="DropDownListSite" runat="server"></asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html> |
.ASPX.VB
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
Imports System.Data
Imports System.Data.OleDb
Partial Class Incidents
Inherits System.Web.UI.Page
Dim MyConnection As System.Data.OleDb.OleDbConnection
Dim MyCommand As New OleDbCommand
Dim MyDataSet As DataSet
Dim MyDataAdapter As OleDbDataAdapter
Dim Requete As String
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
MyConnection = New OleDbConnection()
MyConnection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\SOCIETE\Access\AccessPortail.accdb;Persist Security Info=True"
MyConnection.Open()
Requete = "SELECT DISTINCT Pays FROM Incidents ORDER BY Pays ASC"
MyCommand = New OleDbCommand(Requete, MyConnection)
MyDataAdapter = New OleDbDataAdapter(MyCommand)
MyDataSet = New DataSet
MyDataAdapter.Fill(MyDataSet, "Pays")
DropDownListPays.DataSource = MyDataSet
DropDownListPays.DataTextField = "Pays"
DropDownListPays.DataValueField = "Pays"
DropDownListPays.DataBind()
MyDataSet.Clear()
MyConnection.Close()
End Sub
Protected Sub DropDownListPays_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownListPays.SelectedIndexChanged
MyConnection = New OleDbConnection()
MyConnection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\SOCIETE\Access\AccessPortail.accdb;Persist Security Info=True"
MyConnection.Open()
Requete = "SELECT DISTINCT Site FROM Incidents "
Requete += "WHERE Pays= '" + DropDownListPays.SelectedValue.ToString() + "' "
Requete += "ORDER BY Site ASC"
MyCommand = New OleDbCommand(Requete, MyConnection)
MyDataAdapter = New OleDbDataAdapter(MyCommand)
MyDataSet = New DataSet
MyDataAdapter.Fill(MyDataSet, "Site")
DropDownListSite.DataSource = MyDataSet
DropDownListSite.DataTextField = "Site"
DropDownListSite.DataBind()
MyDataSet.Clear()
MyConnection.Close()
End Sub
End Class |
Ma partie Remplissage de DDL Site en fonction de DDL Pays ne fonctionnne pas..
Ai-je le droit d'utilise les même DataTextField et DataValueField lors de mon remplissage de DDL Pays ?
Auriez vous quelques idées ?
Merci d'avance,
Bien cordialement,
Tan