Как обновить состояние управления в asp.net/ajax? - PullRequest
2 голосов
/ 11 марта 2011

Я пытаюсь обновить определенные элементы управления в соответствии с выбором в раскрывающемся списке.

Например, в событии selectedIndexChanged объекта dropDownList, если пользователь выбирает значение «спортивная машина», текстовое поле «полезная нагрузка» отключается, а текстовое поле «максимальная скорость» включается.

    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

Когда я делаю что-то подобное, элементы управления не включаются / не отключаются, даже событие (к которому я добавил точку останова), похоже, не вызывается (иногда несколько раз после того, как оно поднято). Кроме того, при выполнении инструкций в условии ничего не меняется.

Что я делаю не так? Возможно, это очень простая проблема, но я новичок в MS Visual Web Developer.

Теги:

<%@ 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>
            &nbsp;Max Speed<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        </ContentTemplate>
    </asp:UpdatePanel>
    <p>
    Payload 
    </p>
    <p>
    Max speed 
    </p>

</asp:Content>

Код сзади (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

1 Ответ

2 голосов
/ 11 марта 2011

Можете ли вы попробовать добавить на панель обновления следующее:

<asp:updatepanel>
<contenttemplate>
 ...
</contenttemplate>
<Triggers>
 <asp:AsyncPostBackTrigger ControlID="DropDownList1" EventName="SelectedIndexChanged" />
</Triggers>
</updatepanel>
...