我有两个listbox,请问我在id为userlist的listbox中选择后,如何通过id为AddUser的按钮把选中的项添加到id为Incpt的listbox中?要求用javascript实现!请指教!
=====================================================================
<form id="Form1" method="post" runat="server"><table width="100%" cellpadding="2" cellspacing="0">
<tr>
<td width="40%" align="center">
<asp:ListBox id="UserList" runat="server" Width="90%">
<asp:ListItem Value=黎明>黎明</asp:ListItem></asp:ListBox>
</td>
<td width="20%">
<input type="button" id="UserAdd" value="添加用户" onclick="AddUser()"><br>
<br>
<input type="button" id="UserRemove" value="移除用户" onclick="RemoveUser()">
</td>
<td width="40%" align="center">
<asp:ListBox id="Incept" runat="server" Width="90%"></asp:ListBox></td>
</tr>
</table>
</form>

解决方案 »

  1.   

    <form id="Form1" method="post" runat="server">
    <table width="100%" cellpadding="2" cellspacing="0">
    <tr>
    <td width="40%" align="center">
    <asp:ListBox id="UserList" runat="server" Width="90%">
    <asp:ListItem Value="黎明">黎明</asp:ListItem>
    <asp:ListItem Value="1">1</asp:ListItem>
    <asp:ListItem Value="2">2</asp:ListItem>
    <asp:ListItem Value="3">3</asp:ListItem>
    <asp:ListItem Value="4">4</asp:ListItem>
    <asp:ListItem Value="5">5</asp:ListItem>
    <asp:ListItem Value="6">6</asp:ListItem>
    <asp:ListItem Value="7">7</asp:ListItem>
    </asp:ListBox>
    </td>
    <td width="20%">
    <input type="button" id="UserAdd" value="添加用户" onclick="AddUser()"><br>
    <br>
    <input type="button" id="UserRemove" value="移除用户" onclick="RemoveUser()">
    </td>
    <td width="40%" align="center">
    <asp:ListBox id="Incept" runat="server" Width="90%"></asp:ListBox></td>
    </tr>
    <script language="javascript">
    function AddUser()
    {
       var objddl = document.getElementById("Incept");
        var objTxt = document.getElementById("UserList");
       for(var i=0;i<objTxt.options.length;i++)
     {
     if(objTxt.options[i].selected)
     {
     if(checkSameOption(objTxt.options[i].value,objddl))
     {alert("你已经选择了"+objTxt.options[i].text+"项!");return false;};
      var option=new Option(objTxt.options[i].text,objTxt.options[i].value);
      objddl.options.add(option);
     }
     }
    }
    function checkSameOption(left,right)
    {
    var isSame=false;
    if(right.options.length<=0)
    isSame=false;
    else
    for(var i=0;i<right.options.length;i++)
    {
    if(left==right.options[i].value)
    {isSame=true;break;}
    }
    return isSame
    }function RemoveUser()
    {
        var objddl = document.getElementById("Incept");
        var objTxt = document.getElementById("UserList");
    if(objddl.options.length<=0)
    {
    alert("还没有可删除的项!");return false;
    }
    if(objddl.selectedIndex<0||objddl.selectedIndex>(objddl.options.length-1))
    {
    alert("请从右边列表中选择你要删除的项!");return false;
    }
    if(objddl.options.length<=0)
    return false;
    for(var i=0;i<objddl.options.length;i++)
    {
    if(objddl.options[i].selected)
    {
      objddl.options[i]=null;//remove(i)也可以
      i--;
      
    }
    }
    return false;
    }</script>
    </table>
    </form>
    呵呵,能实现了,还有一点点瑕疵,就楼主自己解决吧,呵呵
      

  2.   

    楼上的,我按提交按钮后,添加到incept的数据又丢失了,也就是Incept.Items.Count的值为零。请问我应该怎样才能将incept提交到后台呢?
      

  3.   

    两个Listbox,三个Button,一个button是将一个Listbox中的记录移动到另一个listbox中,另一个button是将第二个listbox中的记录移除的.第3个button是用于递交数据到数据库的
    还有一个客户端的textbox,用于存放第一个listbox中的值的编号的
    <form id="SelectReceiver" method="post" runat="server">
    <table>
    <tr>
    <td><INPUT id="txtFlag" style="WIDTH: 88px; HEIGHT: 22px" type="text" size="9" name="txtFlag"</td>
    </tr>
    <TR>
    <TD style="WIDTH: 191px" align="right" width="191" height="30">项目成员:</TD>
    <TD height="30">
    <TABLE id="Table3" cellSpacing="0" cellPadding="0" width="100%" border="0">
    <TR align="center">
    <TD style="WIDTH: 139px">
    <asp:listbox id="listAccount" runat="server" Width="141" Height="160" SelectionMode="Multiple"></asp:listbox></TD>
    <TD style="WIDTH: 33px"><INPUT class="buttoncss" style="WIDTH: 48px; HEIGHT: 24px" onclick="AddItem(this.name)"
    type="button" value=">>>>" name="btnReceSendToRight"><BR>
    <INPUT class="buttoncss" style="WIDTH: 48px; HEIGHT: 24px" onclick="RemoveItem(this.name)"
    type="button" value="<<<<" name="btnReceSendToLeft">
    </TD>
    <TD align="left">
    <asp:listbox id="listSendTo" runat="server" Width="141" Height="160" SelectionMode="Multiple"></asp:listbox>&nbsp;
    </TD>
    </TR>
    </TABLE>
    </TD>
    </TR>
    </table>
    </form>
    JavaScript代码
    <script language="javascript">
    function GetData()
    {
     listSendTo = eval("document.SelectReceiver.listSendTo"); 
    document.getElementById("txtFlag").value="";
    for(i=0;i<listSendTo.length;i++)
    {
    document.SelectReceiver.txtFlag.value+=listSendTo.options[i].value+",";
    }
    }
    function AddItem(ControlName)
    {
    Control = null;
    Control=eval("document.SelectReceiver.listSendTo");  
    var x=0;
    var i=0;
    var y=0;
    listAccount=eval("document.SelectReceiver.listAccount");
    listSendTo=eval("document.SelectReceiver.listSendTo");
    var j=listAccount.length;

    for(i=0;i<j;i++)
    {
    if(listAccount.options[i].selected==true)

        if(Control.length==0)
        {
    Control.add(new Option(listAccount[i].text,listAccount.options[i].value));
    listSendTo=eval("document.SelectReceiver.listSendTo");
    //SelectReceiver.txtFlag.value+=listAccount.options[i].value+',';
    continue;

        }
        else
        {
    for(x=0;x<listSendTo.length;x++)
    {
    if(listAccount.options[i].value==listSendTo.options[x].value)
    {
    y++;
    }
    }
        }
        if(y==0)
        {
    Control.add(new Option(listAccount[i].text,listAccount.options[i].value));
    listSendTo=eval("document.SelectReceiver.listSendTo");
    //SelectReceiver.txtFlag.value+=listAccount.options[i].value+','
        }
    }
    }
    }
    function RemoveItem(ControlName)

    Control = null;
    Control=eval("document.SelectReceiver.listSendTo");  

    var j=Control.length;
    if(j==0) return;
    for(j;j>0;j--)
    {
    if(Control.options[j-1].selected==true)

      Control.remove(j-1);
    }
    }
       
    }

    </script>在Page_Load中注册一下递交button,是将第二个listbox中的记录对应的编号保存到客户端的textbox中的.
    btnSubmit.Attributes.Add("onclick","GetData();");递交的时候是如何得到客户端的textbox中保存的值
    使用 string strEmp=Request["txtFlag"].ToString();
    strEmp里面的编号可能有多个 之间是用逗号格开的还有注意一下啊<form>里面的id=SelectReceiver,在脚本中需要用到的
      

  4.   

    如楼上所言,在客户端用js脚本更改了ListBox的选项并不会回传后台,因此你必须要用其他方法来记录所选的项,用一个隐藏的TextBox可以,又或者用cookie
      

  5.   

    其实这也没什么难度的,关键考你的基本功夫
    如果你基本功扎实,就算不太会JAVASCRIPT,也能够很快写出来
    看别人的代码没用的,又不是你自己的!