OVH Cloud OVH Cloud

Dropdownlist et Javascript

1 réponse
Avatar
mc
Bonjour,
J’ai dans une page (en vb.net) un objet datagrid avec une dropdownlist dans
une colonne modèle.

<asp:datagrid id="DtgBareme>
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:DropDownList id="DrpChoixMaj" AutoPostBack="True"
OnSelectedIndexChanged="DrpChoixMaj_SelectedIndexChanged" Runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>

Je rajoute dynamiquement des items dans la dropdownlist lors de l’évèmement
Databound de la Datagrid

Private Sub DtgBareme_ItemDataBound(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.DataGridItemEventArgs) Handles
DtgBareme.ItemDataBound
Dim drptrav As DropDownList
If e.Item.ItemType <> ListItemType.Header And e.Item.ItemType <>
ListItemType.Footer Then
drptrav = CType(e.Item.FindControl("DrpChoixMaj"), DropDownList)
drptrav.Items.Add(New ListItem(“Choisir”, 0))
drptrav.Items.Add(New ListItem("Modifier", "edit"))
drptrav.Items.Add(New ListItem("Supprimer", "delete"))
End If
End Sub

Protected Sub DrpChoixMaj_SelectedIndexChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Dim drptrav As DropDownList = CType(sender, DropDownList)
Dim choixmaj As String = drptrav.SelectedItem.Value
Select Case choixmaj
Case "edit"
response.redirect(“page_maj.aspx”)
Case "delete"
response.redirect(“page_delete.aspx”)
End Sub

Ce code fonctionne bien mais je voudrais y ajouter une confirmation en
javascript lors de la suppression.
J’ai essayé avec le code suivant:

drptrav.Attributes.Add("onchange", "javascript:choixoption(this);")

<script>
function choixoption(nomselect)
{
jtypeaction = nomselect.options[nomselect.selectedIndex].value ;
nomselect.selectedIndex=0 ;
if (jtypeaction == "delete")
{
if (confirm('Confirmez-vous la suppression ?'))
{
__doPostBack(nomselect.name,'');
}
else
{
alert ('Suppression abandonnée');
}
}
else
{
__doPostBack(nomselect.name,'');
}

}
</script>

Ce code ne fonctionne pas car le code sur le serveur
DrpChoixMaj_SelectedIndexChanged ne s’exécute pas
Quelqu’un peut-il me dire comment procéder ?

1 réponse

Avatar
Paul Bacelar
"mc" wrote in message
news:
Bonjour,
J'ai dans une page (en vb.net) un objet datagrid avec une dropdownlist


dans
une colonne modèle.

<asp:datagrid id="DtgBareme>
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:DropDownList id="DrpChoixMaj" AutoPostBack="True"
OnSelectedIndexChanged="DrpChoixMaj_SelectedIndexChanged" Runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>

Je rajoute dynamiquement des items dans la dropdownlist lors de l'


évèmement
Databound de la Datagrid

Private Sub DtgBareme_ItemDataBound(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.DataGridItemEventArgs) Handles
DtgBareme.ItemDataBound
Dim drptrav As DropDownList
If e.Item.ItemType <> ListItemType.Header And e.Item.ItemType <>
ListItemType.Footer Then
drptrav = CType(e.Item.FindControl("DrpChoixMaj"),


DropDownList)
drptrav.Items.Add(New ListItem("Choisir", 0))
drptrav.Items.Add(New ListItem("Modifier", "edit"))
drptrav.Items.Add(New ListItem("Supprimer", "delete"))
End If
End Sub

Protected Sub DrpChoixMaj_SelectedIndexChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Dim drptrav As DropDownList = CType(sender, DropDownList)
Dim choixmaj As String = drptrav.SelectedItem.Value
Select Case choixmaj
Case "edit"
response.redirect("page_maj.aspx")
Case "delete"
response.redirect("page_delete.aspx")
End Sub

Ce code fonctionne bien mais je voudrais y ajouter une confirmation en
javascript lors de la suppression.
J'ai essayé avec le code suivant:

drptrav.Attributes.Add("onchange", "javascript:choixoption(this);")

<script>
function choixoption(nomselect)
{
jtypeaction = nomselect.options[nomselect.selectedIndex].value ;
nomselect.selectedIndex=0 ;
if (jtypeaction == "delete")
{
if (confirm('Confirmez-vous la suppression ?'))
{
__doPostBack(nomselect.name,'');
}
else
{
alert ('Suppression abandonnée');
}
}
else
{
__doPostBack(nomselect.name,'');
}

}
</script>

Ce code ne fonctionne pas car le code sur le serveur
DrpChoixMaj_SelectedIndexChanged ne s'exécute pas
Quelqu'un peut-il me dire comment procéder ?




Commencez par voir si le problème est sur le client ou sur le server en
utilisant un sniffer réseaux comme Ethereal.


--
Paul Bacelar