J'essaie de mettre à jour certaines commandes en fonction d'une sélection dans une liste déroulante. Par exemple, dans l'événement "selectedIndexChanged" d'un dropDownList, si un utilisateur sélectionne la valeur "sport-car", la zone de texte "payload" est désactivée et la zone de texte "max speed" est activée.Comment mettre à jour l'état du contrôle dans asp.net/ajax?
private sub dropDownList1_SelectedIndexChanged(byval sender as object, byval e as eventargs) handles dropDownList1.SelectedIndexChanged
If dropDownList1.selectedValue = "sport-car" then
textBox_payLoad.enabled = false
textBox_maxSpeed.enabled = true
end if
end sub
Quand je fais quelque chose comme ça, les contrôles ne sont pas activés/désactivés, même l'événement (wich j'ai ajouté un point d'arrêt) ne semble pas être soulevé (parfois plusieurs fois après avoir été soulevé). En outre, lorsque les instructions de la condition sont exécutées, rien ne change.
Qu'est-ce que je fais mal? Peut-être que c'est un problème très facile, mais je suis un débutant dans MS Visual Web Developer.
Tags:
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site.Master" CodeBehind="combo_atualizacao.aspx.vb" Inherits="taxasN4Web_v01.combo_atualizacao" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
</asp:ScriptManagerProxy>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True">
<asp:ListItem>sport-car</asp:ListItem>
<asp:ListItem>pickup</asp:ListItem>
<asp:ListItem>van</asp:ListItem>
<asp:ListItem>bus</asp:ListItem>
<asp:ListItem>motorcycle</asp:ListItem>
<asp:ListItem></asp:ListItem>
</asp:DropDownList>
Payload
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
Max Speed<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
<p>
Payload
</p>
<p>
Max speed
</p>
</asp:Content>
code-behind (VB):
Public Class combo_atualizacao
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles DropDownList1.SelectedIndexChanged
If DropDownList1.SelectedValue = "sport-car" Then
TextBox1.Enabled = False
TextBox1.Enabled = True
End If
End Sub
End Class
Si vous copiez-collé le code-behind, alors le problème est que vous êtes en train de désactiver puis de réactiver TextBox1. Vous voulez probablement changer la deuxième ligne en 'TextBox2.Enabled = True', bien que' TextBox2' ne soit jamais désactivé, donc cette ligne de code n'aura pas d'effet visible. –