太长,没看懂btn2.disabled = true;
------------------------------------------------
www.cndigs.com掘客园--发掘、推荐软件开发资源,分享、交流技术开发心得
asp.net2.0资料
http://www.cndigs.com/search.php?search=asp.net%202.0&tag=true
asp.net资料
http://www.cndigs.com/search.php?search=asp.net&tag=true
ajax资料
http://www.cndigs.com/search.php?search=ajax&tag=true

解决方案 »

  1.   

    简单点说:
    就是listbox中选中某项时,btn的enabled=true;
        listbox中没有选中任何一项时,btn的enabled=false;
    说明,我的listbox,btn都是服务器控件.
      

  2.   

    我模拟了一下,结果:
    <head runat="server">
        <title>无标题页</title>
        <script language="javascript" type="text/javascript">
            function moveTo()
            {
                var lbTestUnoValue = document.getElementById('lbTestUno').childNodes;
                var count = lbTestUnoValue.length;
                for (var i=1; i<count; i=i+2)
                {
                    if (lbTestUnoValue(i).selected)
                    {
                        document.getElementById('lbTextDos').appendChild(lbTestUnoValue(i),0);
                        break;
                    }
                }
                var countAfter = document.getElementById('lbTestUno').childNodes.length;
                if (countAfter == 1)
                {
                    document.getElementById('btnServerUno').disabled = true;
                }
                
                return false;
            }
        </script>
    </head>
    <body onload="javascript:document.getElementById('btnServerUno').disabled=true;">
        <form id="form1" runat="server">
        <div>
            <asp:ListBox ID="lbTestUno" runat="server" AutoPostBack="false" onclick="javascript:document.getElementById('btnServerUno').disabled=false;">
                <asp:ListItem Text="A" Value="a"></asp:ListItem>
                <asp:ListItem Text="B" Value="b"></asp:ListItem>
                <asp:ListItem Text="C" Value="c"></asp:ListItem>
                <asp:ListItem Text="D" Value="d"></asp:ListItem>
                <asp:ListItem Text="E" Value="e"></asp:ListItem>
            </asp:ListBox>
            <asp:ListBox ID="lbTextDos" runat="server" AutoPostBack="false">
                <asp:ListItem Text="AA" Value="aa"></asp:ListItem>
                <asp:ListItem Text="BB" Value="bb"></asp:ListItem>
                <asp:ListItem Text="CC" Value="cc"></asp:ListItem>
                <asp:ListItem Text="DD" Value="dd"></asp:ListItem>
                <asp:ListItem Text="EE" Value="ee"></asp:ListItem>
            </asp:ListBox>
            <asp:Button ID="btnServerUno" OnClientClick="return moveTo()" Text="ServerUno" runat="server" />
            <input type="button" onclick="moveTo()" id="btnUno" value="Uno" />
            <input type="button" id="btnDos" value="Dos" />
        </div>
        </form>
    </body>
      

  3.   

    在Page_Load里加上
    this.Button1.Enabled = false;然后使用ListBox的SelectedIndexChanged事件private void ListBox1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    this.Button1.Enabled = true;
    }------------------------------------------------
    www.cndigs.com掘客园--发掘、推荐软件开发资源,分享、交流技术开发心得
    asp.net2.0资料
    http://www.cndigs.com/search.php?search=asp.net%202.0&tag=true
    asp.net资料
    http://www.cndigs.com/search.php?search=asp.net&tag=true
    ajax资料
    http://www.cndigs.com/search.php?search=ajax&tag=true
      

  4.   

    单引号里面的控件ID换成'<%=lbTestUno.ClientID%>'比较好
      

  5.   

    非常谢谢LynnSuZhou().
    初次接触javascript,实在是不懂.
    这个函数能应该可以带参数,因为我在程序里多次用到.每次都是一个listbox和一个button.
    还有,循环条件i , for (var i=1; i<count; i=i+2)为什么它的step为2,
    这段用来干什么的?
     var countAfter = document.getElementById('lbTestUno').childNodes.length;
                if (countAfter == 1)
                {
                    document.getElementById('btnServerUno').disabled = true;
                }
                
    谢谢.
      

  6.   

    还有这个是什么意思?
      document.getElementById('lbTextDos').appendChild(lbTestUnoValue(i),0);
    现在我只要能够控制btn的enabled属性就可以了,btn的单击事件已实现.
    我的listbox的数据都来自datatable,所以每次的操作也是针对dt来的,这个不会受到影响吧.
      

  7.   

    那个<input type="button" onclick="moveTo()" id="btnUno" value="Uno" />可以不用吗?
      

  8.   

    没有给我分啊?啊哟!
    是这样的:1、step 2你可以测试一下,只有单数的才是节点,你可以看到innerHTML里面的0和2之类的双数都只是标记;
    2、document.getElementById('lbTextDos').appendChild(lbTestUnoValue(i),0);是把第一个ListBox中找到的节点lbTestUnoValue(i)移到第二个上去也就是document.getElementById('lbTextDos');
    3、<input type="button" onclick="moveTo()" id="btnUno" value="Uno" />是客户端控件,你可以看到他可服务器端控件的使用区别,两个都是不刷新页面的。
    4、罗嗦一下下:单引号里面的控件ID('lbTextDos')换成'<%=lbTestUno.ClientID%>'比较好
      

  9.   

    忘记说了countAfter是没有可以移动的项之后那个Button就灰掉了
      

  10.   

    if (lbTestUnoValue(i).selected)
                    {
                        document.getElementById('lbTextDos').appendChild(lbTestUnoValue(i),0);
                        break;
                    }当节点i选中时,为什么还要把节点添加到listbox中,不是直接置按钮的enabled为false就行了嘛.
      

  11.   

    不好意思,没看清你的题目, 我以为是点击服务器端Button控件把一个ListBox中的移到另一个里面的呢
      

  12.   

    要实现双击移动子节点把ondblclick="javascript:moveTo()"加到要移动的那个ListBox上去就可以了
      

  13.   

    其实我程序功能确定要求有双击功能,在这里提问之前,我的双击、单击功能都实现,只是当listbox有或无选中项时,相对应的btn的enabled属性不能很好的控制。
    而且你的程序能够控制btn的enabled属性。
    撇开程序功能,我请问问题:
    若listbox中有选中项时,则btn.enabled=true,
    这句:if (lbTestUnoValue(i).selected)是表示listbox中有节点选中的意思吧。
    如果有选中的话,那不就实现btn.enabled=true的功能就可以了啦。
    为什么还是这样做?
     {document.getElementById('lbTextDos').appendChild(lbTestUnoValue(i),0);
     break;}
    上面添加的用义是什么?
    非常非常谢谢。             
      

  14.   

    其实已开始我是误解了你的题目了,如果仅仅控制button是否disabled那么在ListBox中的onclick="javascript:document.getElementById('btnServerUno').disabled=false;"就可以控制,如果没有选择项的话那他MoveTo()里面的就会把它disable掉。
    本来我以为你是要通过Button来移动选择项的 :P。
      

  15.   

    根据你的题目现在改成这样了,你看一下是不是你要的样子:
    <head runat="server">
        <title>无标题页</title>
        <script language="javascript" type="text/javascript">
            function moveTo()
            {
                var lbTestUnoValue = document.getElementById('<%=lbTestUno.ClientID%>').childNodes;
                var count = lbTestUnoValue.length;
                for (var i=1; i<count; i=i+2)
                {
                    if (lbTestUnoValue(i).selected)
                    {
                        document.getElementById('<%=lbTextDos.ClientID%>').appendChild(lbTestUnoValue(i),0);
                        document.getElementById('<%=btnServerUno.ClientID%>').disabled=true;
                        break;
                    }
                }
                var countAfter = document.getElementById('<%=lbTestUno.ClientID%>').childNodes.length;
                if (countAfter == 1)
                {
                    document.getElementById('<%=btnServerUno.ClientID%>').disabled = true;
                }
                
                return false;
            }
        </script>
    </head>
    <body onload="javascript:document.getElementById('<%=btnServerUno.ClientID%>').disabled=true;">
        <form id="form1" runat="server">
        <div>
            <asp:ListBox ID="lbTestUno" runat="server" AutoPostBack="false" ondblclick="javascript:moveTo()" onclick="javascript:document.getElementById('btnServerUno').disabled=false;">
                <asp:ListItem Text="A" Value="a"></asp:ListItem>
                <asp:ListItem Text="B" Value="b"></asp:ListItem>
                <asp:ListItem Text="C" Value="c"></asp:ListItem>
                <asp:ListItem Text="D" Value="d"></asp:ListItem>
                <asp:ListItem Text="E" Value="e"></asp:ListItem>
            </asp:ListBox>
            <asp:ListBox ID="lbTextDos" runat="server" AutoPostBack="false">
                <asp:ListItem Text="AA" Value="aa"></asp:ListItem>
                <asp:ListItem Text="BB" Value="bb"></asp:ListItem>
                <asp:ListItem Text="CC" Value="cc"></asp:ListItem>
                <asp:ListItem Text="DD" Value="dd"></asp:ListItem>
                <asp:ListItem Text="EE" Value="ee"></asp:ListItem>
            </asp:ListBox>
            <asp:Button ID="btnServerUno" Text="ServerUno" runat="server" />
        </div>
        </form>
    </body>
      

  16.   

    it's ok! i don't care. 我只是想解决问题