更新面板不适用于复选框

Update Panel Not working For Checkbox

在下面的代码中,将 asyncPostBackTrigger 更改为 PostBackTrigger 会导致整个页面回发。

但是当我们将触发器用作 asyncPostBackTrigger.

时,下面的代码根本没有做任何事情

对我做错了什么有什么建议吗??

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!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></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
            <asp:UpdatePanel runat="server" ID="UpdatePanel_1" >

                <ContentTemplate>
                    <asp:CheckBox ID="chkNotKnown" runat="server" AutoPostBack="True" 
                                    Text="(Not Known)" OnCheckedChanged="chkNotKnown_CheckedChanged"/>
                </ContentTemplate>

                <Triggers>
                    <asp:asyncPostBackTrigger ControlID="chkNotKnown"/>
                </Triggers>

            </asp:UpdatePanel>

        <asp:TextBox ID="txtDrCode" runat="server" OnFocus="this.style.borderColor='red'" OnBlur="this.style.borderColor=''"></asp:TextBox>
    </form>
</body>

</html>

Partial Class _Default
    Inherits System.Web.UI.Page
    Protected Sub chkNotKnown_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles chkNotKnown.CheckedChanged
        With txtDrCode
            If chkNotKnown.Checked Then
                .Text = "Not Known"
                .Enabled = False
            Else
                .Text = ""
                .Enabled = True
            End If
        End With
    End Sub
End Class

chkNotKnown 在 UpdatePanel 内部,而 txtDrCode 在它外部。您还可以将 chkNotKnown 指定为 asyncPostBackTrigger,这与 UpdatePanel 中已经存在的内容相同。

因此要么将触发器更改为 PostBackTrigger(导致完整的回发)

<Triggers>
    <asp:PostBackTrigger ControlID="chkNotKnown" />
</Triggers>

或者将 TextBox 放在 UpdatePanel 中

<asp:UpdatePanel runat="server" ID="UpdatePanel_1">
    <ContentTemplate>

        <asp:CheckBox ID="chkNotKnown" runat="server" AutoPostBack="True"
            Text="(Not Known)" OnCheckedChanged="chkNotKnown_CheckedChanged" />

        <asp:TextBox ID="txtDrCode" runat="server"></asp:TextBox>

    </ContentTemplate>
</asp:UpdatePanel>