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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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