更新面板不适用于复选框
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>
在下面的代码中,将 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>