Listbox Javascript Multtiselect在升级到.Net 3.5后不工作
我有一个应用程序,它位于.Net1.1中,并使用VisualStudio2008升级到了3.5 有一个页面有一个复选框和一个列表框,该复选框使用Javascript启用和禁用。如果启用,我们可以选择列表中的项目,单击按钮,所选项目将被处理 所选项目在.Net 1.1中运行良好,但在3.5中运行不正常。我将在遇到问题的地方给出示例代码。相同的代码在.Net 1.1中运行良好 下面是aspx行Listbox Javascript Multtiselect在升级到.Net 3.5后不工作,javascript,.net-3.5,listbox,upgrade,multi-select,Javascript,.net 3.5,Listbox,Upgrade,Multi Select,我有一个应用程序,它位于.Net1.1中,并使用VisualStudio2008升级到了3.5 有一个页面有一个复选框和一个列表框,该复选框使用Javascript启用和禁用。如果启用,我们可以选择列表中的项目,单击按钮,所选项目将被处理 所选项目在.Net 1.1中运行良好,但在3.5中运行不正常。我将在遇到问题的地方给出示例代码。相同的代码在.Net 1.1中运行良好 下面是aspx行 <%@ Page Language="C#" AutoEventWireup="true" Code
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ListBox.aspx.cs" Inherits="WebApplication1.ListBox" %>
<!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>
<title>UsageReport</title>
<script language="javascript">
function isAllChecked()
{
var ctrlList = document.getElementById("lstUsers");
var allChecked = document.getElementById("chkAll");
var checked = allChecked.checked;
if (checked) {
ctrlList.disabled = true;
unselectItems();
}
else {
ctrlList.disabled = false;
}
}
function unselectItems()
{
var lstUsers = document.getElementById("lstUsers");
var list = lstUsers;
for (var i = 0; i < list.length; i ++)
{
list[i].selected = false;
}
list.selectedIndex = -1;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<table>
<tr>
<td>
</td>
<td>
<asp:CheckBox ID="chkAll" Checked="True" runat="server" />
</td>
</tr>
<tr>
<td>
</td>
<td>
<asp:ListBox ID="lstUsers" runat="server" SelectionMode="Multiple" Enabled="false"></asp:ListBox>
</td>
</tr>
<tr>
<td>
</td>
<td>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
</td>
</tr>
</table>
</form>
</body>
</html>
在做了一些研究之后,问题在于ListBox在默认情况下是禁用的,因为ASP.NET3.5不允许将更改提交到禁用的控件是根本原因 它通过从列表框中删除enabled=“false”来解决问题
<asp:ListBox ID="lstUsers" runat="server" SelectionMode="Multiple"> </asp:ListBox>
并通过调用主体的javascript onload实现了相同的功能
<body onload="isAllChecked()" >
我在这里所做的攻击是,ASP.Net允许对禁用控件进行任何更改,使该控件在服务器上处于启用状态,但客户端脚本使其禁用
我还尝试在表单标记中使用submitdisabledcontrols=“true”,但对我没有任何用处
<body onload="isAllChecked()" >