我在JQuery Modal Window
中显示ASP.NET
。我正在使用模态窗口作为注册表单。我正在使用checkbox
和buttons
之类的.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控件背后的代码的任何建议?
由于
答案 0 :(得分:1)
当值更改时,复选框不会自动导致回发,因此将无法访问您的服务器端代码。通过将AutoPostBack属性设置为true,可以在更改值时启动回发。
但是我不建议您这样做。考虑一下,为什么要让服务器只是检查客户端上的一些复选框?相反,您应该使用一些JavaScript在客户端上处理它。 jQuery非常有能力。
$('#checkAll').change(function(){
//use jQuery to change the checkbox values here
});
确保您在`checkAll'上发送ClientIdMode="static"
,以便客户端上的ID与服务器上的ID匹配。