web页面代码<%@ Page Language="C#" MasterPageFile="~/MasterPage/ManageMasterPage.master" AutoEventWireup="true" CodeFile="ImpowerPage.aspx.cs" Inherits="Management_ImpowerPage" Title="ImpowerPage" %><asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<link rel="Stylesheet" href="../Css/mainpanel.css" />
<script language="javascript" type="text/javascript"> 
  //双击listbox  
    function ChangeItem(l1,l2)  
   {   
    var cc = document.getElementById(l1).options[window.document.getElementById(l1).selectedIndex].value; 
    var dd = document.getElementById(l1).options[window.document.getElementById(l1).selectedIndex].text; 
    alert(dd + ":" + cc)
    document.getElementById(l1).options.remove(window.document.getElementById(l1).selectedIndex);
    var op = new Option(dd,cc,false,false);
    document.getElementById(l2).options.add(op);
 
   } 
</script>  </asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<div id="Main">
        <div id="About_top">
            <table cellpadding="0" cellspacing="0">
                <tr>
                    <td align="center" style="background-image: url('../images/tab02.gif'); width: 139px;
                        height: 33px;">
                        <img alt="" src="../images/admin.gif" /> User Roles
                    </td>
                    <td style="vertical-align: bottom; height: 1px;">
                        <div id="tab_bg">
                            <img src="../images/tab_bg.gif" alt="" style="width: 576px" /></div>
                    </td>
                </tr>
                <tr>
                    <td colspan="2" style="background-image: url('../images/search_bg.gif'); height: 33px;
                        text-align: right">
                    </td>
                </tr>
            </table>
        </div>
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <table style="width: 100%;">
                <tr>
                    <td>
                        &nbsp;</td>
                    <td>
                        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                        </asp:UpdatePanel>
                    </td>
                </tr>
                <tr>
                    <td>
                        &nbsp;</td>
                    <td>
                        <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
                        <Triggers>
                        
                        </Triggers>
                            <ContentTemplate>
                                <asp:ListBox ID="lbRoles" runat="server" AutoPostBack="True" SelectionMode="Multiple"
                                    Width="100px"></asp:ListBox>
                                <asp:Button ID="btnRemoveAll" runat="server" Text="&lt;&lt;" 
                                    onclick="btnRemoveAll_Click" />
                                <asp:Button ID="btnRomoveBack" runat="server" Text="&lt;" OnClick="btnRomoveBack_Click" />
                                <asp:Button ID="btnMove" runat="server" Text="&gt;" OnClick="btnMove_Click" 
                                    Width="22px" />
                                <asp:Button ID="btnMoveAllRight" runat="server" Text="&gt;&gt;" 
                                    onclick="btnMoveAllRight_Click" />
                                <asp:ListBox ID="lbUserRoles" runat="server" AutoPostBack="True" SelectionMode="Multiple"
                                    Width="100px"></asp:ListBox>
                            </ContentTemplate>
                        </asp:UpdatePanel>
                    </td>
                </tr>
                <tr>
                    <td>
                        &nbsp;
                    </td>
                    <td>
                        <asp:Button ID="btnSubmit" runat="server" Text="应用" onclick="btnSubmit_Click" />&nbsp;&nbsp;&nbsp;
                        <asp:Button ID="btnComplete" runat="server" Text="确定" />&nbsp;&nbsp;&nbsp;
                        <asp:Button ID="btnCancel" runat="server" Text="取消" />
                    </td>
                </tr>
            </table>
        </div>
    </div>
</asp:Content>
后台代码(只贴了添加双击事件的代码)protected void Page_Load(object sender, EventArgs e)
    {
        //当页面第一次加载
        if (!IsPostBack)
        {
            ListBindRoles(getFirstUser());
            ListBindUserRoles(getFirstUser());
            lbRoles.Attributes.Add("ondblclick", "ChangeItem('" + lbRoles.ClientID + "','" + lbUserRoles.ClientID + "')");
            lbUserRoles.Attributes.Add("ondblclick", "ChangeItem('" + lbUserRoles.ClientID + "','" + lbRoles.ClientID + "')"); 
        }
    }
运行后当我双击listbox值的时候报错
我调试可以得到cc dd的值,alert下面那个的值是-1  然后就报错了
var cc = document.getElementById(l1).options[window.document.getElementById(l1).selectedIndex].value; 
    var dd = document.getElementById(l1).options[window.document.getElementById(l1).selectedIndex].text; 
    alert(dd + ":" + cc)
    document.getElementById(l1).options.remove(window.document.getElementById(l1).selectedIndex);
请高手帮忙解决,谢谢!

解决方案 »

  1.   

    很遗憾我ie8测试正确,你需要考虑一下浏览器兼容问题了,自己一步步测试程序员T恤
      

  2.   

    两个listbox双击传值的问题。
    双击左边的listbox的值传到右边的listbox。
      

  3.   

    前台代码
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="test20091008.aspx.cs" Inherits="test20091008" %>   
    <%@ Register assembly="System.Web.Extensions" namespace="System.Web.UI" tagprefix="asp" %>   
    <!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 runat="server">   
        <title>无标题页</title>   
            
    </head>   
    <body>   
        <form id="form1" runat="server">   
        <asp:ScriptManager ID="ScriptManager1" runat="server">   
        </asp:ScriptManager>   
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">   
        <ContentTemplate>   
        <table>   
        <tr>   
            <td><asp:ListBox ID="lbxSource" runat="server" Rows="10" Width="186px" SelectionMode="Multiple"></asp:ListBox></td>   
            <td>   
                 <asp:Button ID="btnToRight" runat="server" Text=">"  Width="30px" CommandName="ToRight" OnCommand="listBoxOperate_OnCommand" /><br />   
                 <asp:Button ID="btnAllToRight" runat="server" Text=">>" CommandName="AllToRight" OnCommand="listBoxOperate_OnCommand" Width="30px" /><br />   
                 <asp:Button ID="btnDel" runat="server" Text="<" CommandName="ToLeft" OnCommand="listBoxOperate_OnCommand" Width="30px" /><br />   
                 <asp:Button ID="btnAllDel" runat="server" Text="<<" CommandName="AllToLeft" OnCommand="listBoxOperate_OnCommand" Width="30px" />   
            </td>   
            <td><asp:ListBox ID="lbxTo" runat="server" Rows="10" Width="186px" SelectionMode="Multiple"></asp:ListBox></td>   
            <td>   
                <asp:Button ID="btnUp" runat="server" Text="↑"  Width="30px" CommandName="ToUp" OnCommand="listBoxOperate_OnCommand" /><br />   
                <asp:Button ID="btnDown" runat="server" Text="↓"  Width="30px" CommandName="ToDown" OnCommand="listBoxOperate_OnCommand" />   
            </td>   
        </tr>   
        </table>   
        </ContentTemplate>   
        </asp:UpdatePanel>   
        </form>   
    </body>   
    </html>   
    后台代码
    using System;    
    using System.Collections;    
    using System.Configuration;    
    using System.Data;    
    using System.Web;    
    using System.Web.Security;    
    using System.Web.UI;    
    using System.Web.UI.HtmlControls;    
    using System.Web.UI.WebControls;    
    using System.Web.UI.WebControls.WebParts;    
       
    public partial class test20091008 : System.Web.UI.Page    
    {    
        protected void Page_Load(object sender, EventArgs e)    
        {    
            if (!Page.IsPostBack)    
            {    
                for (int i = 0; i < 10; i++)    
                {    
                    this.lbxSource.Items.Add(new ListItem("★"+i, i.ToString()));    
                }    
            }    
                
        }    
       
        protected void listBoxOperate_OnCommand(object sender,CommandEventArgs e)    
        {    
            ArrayList arrTo = new ArrayList();    
            switch (e.CommandName)    
            {    
                case "ToRight":    
                    if (this.lbxSource.SelectedIndex == -1)    
                    {    
                        break;    
                    }    
                    else   
                    {    
                        foreach(ListItem item in lbxSource.Items)    
                        {    
                            if(item.Selected)    
                            {    
                                arrTo.Add(item);    
                            }    
                        }    
       
                        foreach (ListItem item in arrTo)    
                        {    
                            this.lbxTo.Items.Add(item);    
                            this.lbxSource.Items.Remove(item);    
                        }    
                            
                        break;    
                    }    
                        
                case "AllToRight":    
                    if (this.lbxSource.Items.Count > 0)    
                    {    
                        foreach (ListItem item in lbxSource.Items)    
                        {    
                            this.lbxTo.Items.Add(item);    
                        }    
                        this.lbxSource.Items.Clear();    
                        break;    
                    }    
                    else   
                    {    
                        break;    
                    }    
                case "ToLeft":    
                    if(this.lbxTo.SelectedIndex == -1)    
                    {    
                        break;    
                    }    
                    else   
                    {    
                        foreach (ListItem item in lbxTo.Items)    
                        {    
                            if (item.Selected)    
                            {    
                                arrTo.Add(item);    
                            }    
                        }    
       
                        foreach (ListItem item in arrTo)    
                        {    
                            this.lbxSource.Items.Add(item);    
                            this.lbxTo.Items.Remove(item);    
                        }    
                            
                        break;    
                    }    
                    break;    
                case "AllToLeft":    
                    if (this.lbxTo.Items.Count > 0)    
                    {    
                        foreach (ListItem item in lbxTo.Items)    
                        {    
                            this.lbxSource.Items.Add(item);    
                        }    
                        this.lbxTo.Items.Clear();    
                        break;    
                    }    
                    else   
                    {    
                        break;    
                    }    
                case "ToUp":    
                    for (int i = 0; i < lbxTo.Items.Count; i++)    
                    {    
                        if (lbxTo.Items[i].Selected)    
                        {    
                            if (i > 0 && lbxTo.SelectedIndex > -1)    
                            {    
                                ListItem item = lbxTo.Items[i];    
                                lbxTo.Items.RemoveAt(i);    
                                lbxTo.Items.Insert(i - 1, item);    
                            }    
                        }    
                    }    
                    break;    
                case "ToDown":    
                    for (int i = lbxTo.Items.Count - 1; i > -1; i--)    
                    {    
                        if (lbxTo.Items[i].Selected)    
                        {    
                            ListItem item = lbxTo.Items[i];    
                            if (i < lbxTo.Items.Count - 1)    
                            {    
                                lbxTo.Items.Insert(i + 2, item);    
                                lbxTo.Items.RemoveAt(i);    
                            }    
       
                        }    
                    }    
                    break;    
            }    
        }    
       
    }