2015-07-11 145 views
0

我有以下问题,我想通过使用asp:复选框禁用或启用asp窗体中的控件,但是当我点击复选框将选中状态更改为true或false时,它将始终发送 “假”asp:复选框始终发送虚假

<%@ Page Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="Registration.aspx.vb" Inherits="Default2" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> 
    <style type="text/css"> 
     .auto-style2 { 
      text-align: left; 
     } 
     .auto-style3 { 
      font-family: "Times New Roman", Times, serif; 
     } 
     .auto-style4 { 
      font-family: "Times New Roman", Times, serif; 
      font-size: medium; 
     } 
     .auto-style5 { 
      font-family: "Times New Roman", Times, serif; 
      font-weight: bold; 
      font-size: x-large; 
     } 
     .auto-style6 { 
      font-size: medium; 
     } 
     .auto-style7 { 
      font-family: "Times New Roman", Times, serif; 
      font-size: x-large; 
      text-transform: capitalize; 
      border-style: outset; 
      border-width: 3px; 
     } 
     .auto-style8 { 
      width: 351px; 
     } 
     .auto-style9 { 
      width: 344px; 
     } 
    </style> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> 



    <div id="registration" class="auto-style2"> 
      <asp:Label ID="lblMessage" runat="server" Text=""></asp:Label> 
      <br /> 
      <table> 
       <tr> 
        <td>Employees in the database:</td> 
        <td> 

        <asp:UpdatePanel ID="upddlEmployee" runat="server"> 
        <ContentTemplate> 
         <asp:DropDownList 
          ID="drpEmployee" 
          runat="server" 
          Height="30px" 
          Width="175px" 
          BackColor="White" 
          CssClass="auto-style2" 
          ForeColor="#000099" 
          AutoPostBack="true"> 
         </asp:DropDownList> 
        </ContentTemplate> 
        <Triggers> 
         <asp:AsyncPostBackTrigger ControlID ="drpEmployee" EventName="SelectedIndexChanged" /> 
        </Triggers> 
       </asp:UpdatePanel> 


        </td> 
       </tr> 

      </table> 
      <br /> 
      <br /> 
      <table> 
       <tr> 
        <td class="auto-style8"> 

     <asp:Label ID="Label1" runat="server" Text="Employee ID:*" Width="300px" 
      Font-Bold="True" CssClass="auto-style7" Height="31px" BorderStyle="None"></asp:Label> 
        </td> 
        <td class="auto-style9"> 
         <asp:UpdatePanel ID="UpdatePanel5" runat="server"> 
          <ContentTemplate> 
           <asp:TextBox ID="txtEmployee_id" runat="server" CssClass="auto-style5" Height="30px" Width="200px" AutoPostBack ="true" OnTextChanged ="txtEmployeeUser_id_TextChanged"></asp:TextBox> 
          </ContentTemplate> 
         </asp:UpdatePanel> 
        </td> 
        <td> 
         <asp:UpdatePanel ID="UpdatePanel7" runat="server"> 
          <ContentTemplate> 
           <span class="auto-style6"> 
           <asp:label 
            ID="lblEmployeeID" 
            runat="server" 
            Text ="" 
            InitialValue="" Width="229px"></asp:label> 
           </span> 
          </ContentTemplate> 
         </asp:UpdatePanel> 
        </td> 
       </tr> 
       <tr> 
        <td class="auto-style8"><span class="auto-style6"> 
      <asp:Label ID="Label4" runat="server" Text="First Name:*" Width="300px" 
      Font-Bold="True" CssClass="auto-style7" height="30px" BorderStyle="None"></asp:Label> 
     </span> 
        </td> 
        <td class="auto-style9"> 
     <asp:TextBox ID="txtFirstName" runat="server" Width="200px" CssClass="auto-style5" height="30px"></asp:TextBox> 
        </td> 
        <td> 
     <span class="auto-style6"> 
     <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" 
      ControlToValidate="txtFirstName" ErrorMessage="First Name Required" CssClass="auto-style3" Width="300px"></asp:RequiredFieldValidator> 
     </span> 
        </td> 
       </tr> 
       <tr> 
        <td class="auto-style8"> 

      <span class="auto-style6"> 

     <asp:Label ID="Label5" runat="server" Text=" Last Name:*" Width="300px" 
      Font-Bold="True" CssClass="auto-style7" height="30px" BorderStyle="None"></asp:Label> 
     </span> 
        </td> 
        <td class="auto-style9"> 
     <asp:TextBox ID="txtLastName" runat="server" Width="200px" CssClass="auto-style5" height="30px"></asp:TextBox> 
        </td> 
        <td> 
     <span class="auto-style6"> 
     <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" 
     ControlToValidate="txtLastName" ErrorMessage="Last Name Required" CssClass="auto-style3" Width="300px"></asp:RequiredFieldValidator> 
     </span> 
        </td> 
       </tr> 
       <tr> 
        <td class="auto-style8"> 

      <span class="auto-style6"> 


       <asp:Label ID="lblUsername" runat="server" Text=" User Name:*" Width="300px" 
      Font-Bold="True" CssClass="auto-style7" height="30px" BorderStyle="None"></asp:Label> 
     </span></td> 
        <td class="auto-style9"> 
         <asp:UpdatePanel ID="UpdatePanel6" runat="server"> 
          <ContentTemplate> 
           <asp:TextBox ID="txtUserName" runat="server" CssClass="auto-style5" height="30px" Width="200px" AutoPostBack ="True" OnTextChanged="txtEmployeeUser_id_TextChanged"></asp:TextBox> 
          </ContentTemplate> 
          <Triggers> 
           <asp:AsyncPostBackTrigger ControlID="txtUserName" EventName="TextChanged" /> 
          </Triggers> 
         </asp:UpdatePanel> 
        </td> 
        <td> 
     <span class="auto-style6"> 
           <asp:label 
            ID="lblUsernameCheck" 
            runat="server" 
            Text ="" 
            InitialValue="" Width="229px"></asp:label> 
     </span> 
        </td> 
       </tr> 
       <tr> 
        <td class="auto-style8"> 
     <span class="auto-style6"> 
     <asp:Label ID="Label6" runat="server" Text="Regular Time:" Width="300px" 
      Font-Bold="True" CssClass="auto-style7" height="30px" BorderStyle="None"></asp:Label> 
     </span> 
        </td> 
        <td class="auto-style9"> 
         <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
          <ContentTemplate> 
           <asp:TextBox ID="txtRegularTime" runat="server" CssClass="auto-style5" height="30px" TextMode="Number" Width="200px" AutoPostBack ="True" OnTextChanged ="txtRegularTime_TextChanged"></asp:TextBox> 
          </ContentTemplate> 
          <Triggers> 
           <asp:AsyncPostBackTrigger ControlID="txtRegularTime" EventName="TextChanged" /> 
          </Triggers> 
         </asp:UpdatePanel> 
        </td> 
        <td>&nbsp;</td> 
       </tr> 
       <tr> 
        <td class="auto-style8"> 
     <span class="auto-style6"> 
     <asp:Label ID="Label7" runat="server" Text="Double Time:" Width="300px" 
      Font-Bold="True" CssClass="auto-style7" height="30px" BorderStyle="None"></asp:Label> 
     </span> 
        </td> 
        <td class="auto-style9"> 
         <asp:UpdatePanel ID="UpdatePanel2" runat="server"> 
          <ContentTemplate> 
           <asp:TextBox ID="txtDoubleTime" runat="server" CssClass="auto-style5" height="30px" TextMode="Number" Width="200px"></asp:TextBox> 
          </ContentTemplate> 
         </asp:UpdatePanel> 
        </td> 
        <td>&nbsp;</td> 
       </tr> 
       <tr> 
        <td class="auto-style8"> 
     <span class="auto-style6"> 
     <asp:Label ID="Label8" runat="server" Text="Part Time:" Width="300px" 
      Font-Bold="True" CssClass="auto-style7" height="30px" BorderStyle="None"></asp:Label> 
     </span> 
        </td> 
        <td class="auto-style9"> 
         <asp:UpdatePanel ID="UpdatePanel3" runat="server"> 
          <ContentTemplate> 
           <asp:TextBox ID="txtPartTime" runat="server" Width="200px" TextMode="Number" CssClass="auto-style5" height="30px" AutoPostBack ="True" OnTextChanged ="txtPartTime_TextChanged"></asp:TextBox> 
          </ContentTemplate> 
          <Triggers> 
           <asp:AsyncPostBackTrigger ControlID="txtPartTime" EventName="TextChanged" /> 
          </Triggers> 
         </asp:UpdatePanel> 
        </td> 
        <td>&nbsp;</td> 
       </tr> 
       <tr> 
        <td class="auto-style8"> 
     <span class="auto-style6"> 
     <asp:Label ID="Label9" runat="server" Text="Over time:" Width="300px" 
      Font-Bold="True" CssClass="auto-style7" height="30px" BorderStyle="None"></asp:Label> 
     </span> 
        </td> 
        <td class="auto-style9"> 
         <asp:UpdatePanel ID="UpdatePanel4" runat="server"> 
          <ContentTemplate> 
           <asp:TextBox ID="txtOverTime" runat="server" Width="200px" TextMode="Number" CssClass="auto-style5" height="30px"></asp:TextBox> 
          </ContentTemplate> 
         </asp:UpdatePanel> 
        </td> 
        <td>&nbsp;</td> 
       </tr> 
       <tr> 
        <td class="auto-style8"> 
        <asp:Label ID="Label2" runat="server" Text=" Password:*" Width="231px" Font-Bold="True" CssClass="auto-style7" height="30px" BorderStyle="None"></asp:Label> 


         <asp:UpdatePanel ID="UpdatePanel8" runat="server"> 
         <ContentTemplate> 
          <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true" OnCheckedChanged="chkChecked" /> 
         </ContentTemplate> 
         <Triggers> 
          <asp:AsyncPostBackTrigger EventName="CheckedChanged" ControlID ="CheckBox1" /> 
         </Triggers> 
         </asp:UpdatePanel> 

       </td> 

        <td class="auto-style9"> 

         <asp:UpdatePanel ID="UpdatePanel9" runat="server"> 
          <ContentTemplate> 
           <asp:TextBox ID="txtPassword" runat="server" Width="200px" TextMode="Password" CssClass="auto-style5" height="30px"></asp:TextBox> 
          </ContentTemplate> 
         </asp:UpdatePanel> 

        </td> 
        <td> 
     <span class="auto-style6"> 
      <asp:CustomValidator ID="txtpasswordValidator" runat="server" 
       ControlToValidate="txtPassword" ErrorMessage="Password Required" CssClass="auto-style3" Width="300px" 
       OnServerValidate="txtpassword_ServerValidate" > 
      </asp:CustomValidator> 
     </span></td> 
       </tr> 
       <tr> 
        <td class="auto-style8"> 
     <span class="auto-style6"> 
     <asp:Label ID="Label3" runat="server" Text=" Confirm Password:*" Width="300px" 
      Font-Bold="True" CssClass="auto-style7" height="30px" BorderStyle="None"></asp:Label> 
     </span> 
        </td> 
        <td class="auto-style9"> 
              <asp:UpdatePanel ID="UpdatePanel10" runat="server"> 
          <ContentTemplate> 
           <asp:TextBox ID="txtConfirmpassword" runat="server" Width="200px" TextMode="Password" CssClass="auto-style5" height="30px"></asp:TextBox> 
          </ContentTemplate> 
         </asp:UpdatePanel> 

        </td> 
        <td> 
     <span class="auto-style6"> 
     <asp:CustomValidator 
      ID="CustomValidator1" 
      runat="server" 
      ControlToValidate="txtConfirmpassword" 
      ErrorMessage="Password mismatch" 
      OnServerValidate="txtConfirmpassword_ServerValidate" 
      CssClass="auto-style3" 
      Width="300px"></asp:CustomValidator> 
     </span></td> 
       </tr> 
       <tr> 
        <td class="auto-style8"> 


         <asp:Label ID="Label10" runat="server" Text="Label" Visible="False"></asp:Label> 
        </td> 
        <td class="auto-style9">&nbsp;</td> 
        <td>&nbsp;</td> 
       </tr> 
       <tr> 
        <td class="auto-style8">&nbsp;</td> 
        <td class="auto-style9">&nbsp;</td> 
        <td>&nbsp;</td> 
       </tr> 
      </table> 
     <br /> 

      <span class="auto-style6"> 
      &nbsp;<br class="auto-style3" /> 
     </span><span class="auto-style4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="auto-style6"> 
     <br class="auto-style3" /> 



     <Table runat="server" > 
      <tr> 
       <td> 
        <asp:Button 
         ID="btnConfirmPassword" 
         runat="server" 
         Text="Confirm Registration" 
         onclick="Button1_Click" 
         Font-Bold="True" 
         Font-Size="X-Large" 
         Height="50px" 
         Width="250px" /> 
       </td> 
       <td> 
        <asp:Button 
         ID="btnClear" 
         runat="server" 
         Text="ClearData" 
         onclick="btnClear_Click" 
         Font-Bold="True" 
         Font-Size="X-Large" 
         Height="50px" 
         Width="250px" /> 
       </td> 
      </tr> 
     </Table> 



      </span> 


    </div> 

</asp:Content> 

,并且是由ASP invoqued的代码如下:

Imports System.Data 
Imports System.Configuration 
Imports MySql.Data.MySqlClient 

Partial Class Default2 
    Inherits System.Web.UI.Page 
    Dim gclass As New GlobalClass 
    Dim employeeData As New Employee 
    Dim intEmployee() As Integer 
    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles btnConfirmPassword.Click 
     If drpEmployee.SelectedIndex = -1 Then 
      ExeQuery("I") 
     Else 
      ExeQuery("U") 
     End If 
     clearFields() 
    End Sub 

    Sub ExeQuery(strMode As String) 
     If txtRegularTime.Text <> "" Then 
      Dim query As String = gclass.SPEmployeeCall(strMode, 1, txtUserName.Text, txtPassword.Text, txtConfirmpassword.Text, _ 
               txtEmployee_id.Text, txtFirstName.Text, txtLastName.Text, _ 
               Convert.ToDouble(txtOverTime.Text), Convert.ToDouble(txtDoubleTime.Text), _ 
               Convert.ToDouble(txtPartTime.Text), Convert.ToDouble(txtRegularTime.Text)) 
      gclass.ExecuteSP(query) 
     End If 
    End Sub 



    Protected Sub txtRegularTime_TextChanged(sender As Object, e As EventArgs) Handles txtRegularTime.TextChanged 
     If Convert.ToDecimal(txtRegularTime.Text) > 0 Then 
      txtDoubleTime.Text = Convert.ToDecimal(txtRegularTime.Text * 2) 
      txtOverTime.Text = Convert.ToDecimal(txtRegularTime.Text * 1.5) 
      txtPartTime.Text = 0 
     End If 
     txtPassword.Focus() 
    End Sub 

    Protected Sub txtPartTime_TextChanged(sender As Object, e As EventArgs) Handles txtPartTime.TextChanged 
     If Convert.ToDecimal(txtPartTime.Text) > 0 Then 
      txtDoubleTime.Text = 0 
      txtOverTime.Text = 0 
      txtRegularTime.Text = 0 
     End If 
     txtPassword.Focus() 
    End Sub 
    Sub clearFields() 
     drpEmployee.SelectedIndex = 0 
     checkboxDRPemployee() 
     txtEmployee_id.Text = Nothing 
     txtFirstName.Text = Nothing 
     txtLastName.Text = Nothing 
     txtUserName.Text = Nothing 
     txtDoubleTime.Text = Nothing 
     txtOverTime.Text = Nothing 
     txtRegularTime.Text = Nothing 
     txtPartTime.Text = Nothing 
    End Sub 

    Sub clearFields(dt As DataTable) 
     txtEmployee_id.Text = dt.Rows(0)(1) 
     txtFirstName.Text = dt.Rows(0)(2) 
     txtLastName.Text = dt.Rows(0)(3) 
     txtUserName.Text = dt.Rows(0)(8) 
     txtDoubleTime.Text = dt.Rows(0)(5) 
     txtOverTime.Text = dt.Rows(0)(4) 
     txtRegularTime.Text = dt.Rows(0)(7) 
     txtPartTime.Text = dt.Rows(0)(6) 
     txtPassword.Text = dt.Rows(0)(9) 
     txtConfirmpassword.Text = dt.Rows(0)(10) 
    End Sub 




    Protected Sub txtEmployeeUser_id_TextChanged(sender As Object, e As EventArgs) Handles txtEmployee_id.TextChanged, txtUserName.TextChanged 
     Dim intMode As Integer 

     If sender Is txtEmployee_id Then 
      intMode = 2 
     ElseIf sender Is txtUserName Then 
      intMode = 3 
     End If 

     Dim query As String = gclass.SPEmployeeCall("Q", intMode, txtUserName.Text, Nothing, Nothing, _ 
                txtEmployee_id.Text, Nothing, Nothing, _ 
                Nothing, Nothing, _ 
                Nothing, Nothing) 
     lblEmployeeID.Visible = True 
     lblEmployeeID.Text = gclass.DatabaseMessages(query) 
    End Sub 



    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
     If Session.Contents("Employee") Is Nothing Then 
      Response.Redirect("Login.aspx") 
     Else 
      employeeData = Session("Employee") 
     End If 
     If Not IsPostBack And drpEmployee.SelectedIndex = -1 Then 
      Session.Contents("EmployeeDDL") = gclass.LoadEmployeeAbsent(drpEmployee, 99) 
     End If 
     checkboxDRPemployee() 
    End Sub 


    Protected Sub drpEmployee_SelectedIndexChanged(sender As Object, e As EventArgs) Handles drpEmployee.SelectedIndexChanged 
     intEmployee = Session.Contents("EmployeeDDL") 
     If drpEmployee.SelectedIndex <> 0 Then 
      Dim query As String = gclass.SPEmployeeCall("Q", 7, Nothing, Nothing, Nothing, intEmployee(drpEmployee.SelectedIndex), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing) 
      Dim dt As DataTable = gclass.Mysql_CreateDataTable(query) 
      clearFields(dt) 
     Else 
      clearFields() 
     End If 



    End Sub 

    Sub checkboxDRPemployee() 
     If drpEmployee.SelectedIndex <> 0 Then 
      CheckBox1.Enabled = True 
      CheckBox1.Checked = False 
     Else 
      CheckBox1.Enabled = False 
      CheckBox1.Checked = False 
     End If 
    End Sub 

    Protected Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click 
     clearFields() 
    End Sub 

    Protected Sub txtpassword_ServerValidate(source As Object, args As ServerValidateEventArgs) 
     If Not CheckBox1.Checked Then 
      args.IsValid = (txtPassword.Text <> "") 
     End If 
    End Sub 

    Protected Sub txtConfirmpassword_ServerValidate(source As Object, args As ServerValidateEventArgs) 
     If Not CheckBox1.Checked Then 
      args.IsValid = (txtPassword.Text = txtConfirmpassword.Text) 
     End If 
    End Sub 

    Protected Sub chkChecked(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged 
     Dim thisValue As Boolean = CheckBox1.Checked 


     txtPassword.Enabled = CheckBox1.Checked 
     txtConfirmpassword.Enabled = CheckBox1.Checked 
    End Sub 

End Class 

预先感谢您 最亲切的问候 道格拉斯Leekam

+0

您是否可以将这个问题切割成最小代码来重现问题? –

回答

0

这肯定有一些与AutoPostBack="true"

尽量做到通过改变来进行调试:

<asp:CheckBox ID="CheckBox1" runat="server" OnCheckedChanged="chkChecked" /> 

不知道你的代码的功能,但你可能想包装内

页面加载代码
If Not Page.IsPostBack Then 
// code currently in page load 
End If 
+0

问候,谢谢你,我正在测试你说的,但是复选框的功能部分是 1)当选中时 根据选中的状态将textboxt的enable属性设置为false或true –

+0

问候,谢谢,我正在测试你说什么,但复选框的功能的一部分是 1)当检查 设置textboxt的启用属性为false或true取决于检查的状态 所以当我摆脱了AutoPostBack =“true”它不执行vbscript –

0

您可以使用javascript来检查复选框是否被选中或不是基于值,您可以从JavaScript本身禁用该控件。您可以使用javascript onchange事件来检查复选框的值。