Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Listbox Javascript Multtiselect在升级到.Net 3.5后不工作_Javascript_.net 3.5_Listbox_Upgrade_Multi Select - Fatal编程技术网

Listbox Javascript Multtiselect在升级到.Net 3.5后不工作

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

我有一个应用程序,它位于.Net1.1中,并使用VisualStudio2008升级到了3.5

有一个页面有一个复选框和一个列表框,该复选框使用Javascript启用和禁用。如果启用,我们可以选择列表中的项目,单击按钮,所选项目将被处理

所选项目在.Net 1.1中运行良好,但在3.5中运行不正常。我将在遇到问题的地方给出示例代码。相同的代码在.Net 1.1中运行良好

下面是aspx行

<%@ 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>
                &nbsp;</td>
            <td>
        <asp:CheckBox ID="chkAll" Checked="True"  runat="server" />
            </td>
        </tr>
        <tr>
            <td>
                &nbsp;</td>
            <td>
        <asp:ListBox ID="lstUsers" runat="server" SelectionMode="Multiple" Enabled="false"></asp:ListBox>
            </td>
        </tr>
        <tr>
            <td>
                &nbsp;</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()" >