ASP.NET控件后面的代码没有执行

时间:2015-02-16 23:39:17

标签: javascript c# jquery asp.net

我在JQuery Modal Window中显示ASP.NET。我正在使用模态窗口作为注册表单。我正在使用checkboxbuttons之类的.NET控件。但是,我遇到的问题是,即使我对两个控件都有codebehind,它也永远不会到达后面的代码。例如,我有一个名为checkAll的Check All复选框。在后面的代码中,我有以下代码来检查所有:

protected void checkAll_CheckedChanged(object sender, EventArgs e)
    {
        if (checkAll.Checked == true)
        {
            foreach (ListItem li in cbList.Items)
            {
                li.Selected = true;
            }
        }
        else
        {
            foreach (ListItem li in cbList.Items)
            {
                li.Selected = false;
            }
        }
    }

然而,当我在第一个if语句中调试并停止时,它永远不会出现。

此外,在按钮的addNewUser_Click事件中,我想加载checkboxList我现在在Page_Load中执行的操作。但是,当我将相同的代码放在按钮后面的代码中时,它永远不会加载。

以下是aspx代码:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master"  AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TAP._Default" %>
<%@ Register Assembly="Trirand.Web" Namespace="Trirand.Web.UI.WebControls"   TagPrefix="cc1" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
 <header>

 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
 <script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.9/jquery-ui.js" type="text/javascript"></script>
 <link href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.9/themes/start/jquery-ui.css"
rel="stylesheet" type="text/css" />
<script type="text/javascript">
       $("[id*=addNewUser]").live("click", function () {
    $("#adduser").dialog({
        title: "Add User",
        resizable: false,
        buttons: {
            Save: function () {
                $(this).dialog('save');
            },
            Cancel: function () {
                $(this).dialog('close');
            }
        }
    });
    return false;
});
</script>
</header>
<br />
 <asp:Label ID="lblNoRole" runat="server" Text="No role has been assigned yet." Visible="False" CssClass="alert-link"></asp:Label>
<div id="clientManager" runat="server">
 <div class="text">Clients: <asp:DropDownList ID="ddclients" runat="server" BackColor="#F6F1DB" ForeColor="#7d6754" CssClass="ddl" Height="30px"></asp:DropDownList> <asp:Button ID="addNewUser" runat="server" Text="Add user" CssClass="btn-danger" Height="25px" Width="98px" OnClick="addNewUser_Click" />
     <div id="adduser" style="display: none">
     First Name:
         <asp:TextBox ID="firstName" runat="server"></asp:TextBox><br />
     Last Name:
         <asp:TextBox ID="lastName" runat="server"></asp:TextBox><br />
     Email address:
         <asp:TextBox ID="email" runat="server" TextMode="Email">  </asp:TextBox><br />
Phone Number:
         <asp:TextBox ID="phone" runat="server" TextMode="Phone"></asp:TextBox>
Password:
         <asp:TextBox ID="pwd" runat="server" TextMode="Password"></asp:TextBox><br />
Confirm password:
         <asp:TextBox ID="pwd2" runat="server" TextMode="Password"></asp:TextBox><br />
Client(s): Select all <asp:CheckBox ID="checkAll" runat="server" OnCheckedChanged="checkAll_CheckedChanged" /><br /><br />
         <asp:Panel ID="Panel1" runat="server" ScrollBars="Auto" Height="150px"> <asp:CheckBoxList ID="cbList" runat="server" Font-Size="10px" ></asp:CheckBoxList></asp:Panel>

 </div>
 </div>
</div><hr id="h2" runat="server" />
<div id="clientUser" runat="server">
    <div class="text">Client User DIV</div>
</div><hr id="h1" runat="server" />
<div id="administrator" runat="server">
    <div class="text">Administrator DIV</div>
</div>

请注意,JavaScript功能现在只显示模态窗口。它没有做任何其他事情。

有关为什么我无法访问asp.net控件背后的代码的任何建议?

由于

1 个答案:

答案 0 :(得分:1)

当值更改时,复选框不会自动导致回发,因此将无法访问您的服务器端代码。通过将AutoPostBack属性设置为true,可以在更改值时启动回发。

但是我建议您这样做。考虑一下,为什么要让服务器只是检查客户端上的一些复选框?相反,您应该使用一些JavaScript在客户端上处理它。 jQuery非常有能力。

$('#checkAll').change(function(){
    //use jQuery to change the checkbox values here
});

确保您在`checkAll'上发送ClientIdMode="static",以便客户端上的ID与服务器上的ID匹配。

相关问题