<select id="select2" style="height: 108px;width:100px;"  runat="server" multiple="true">
            
        </select>
我用js往select2里添加了几项数据,现在用imagebutton单击事件来打印出这些项来,却打印出来是空的,
protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
    {
        string k = "";
        for (int i = 0; i < this.select2.Items.Count; i++)
        {
            k += this.select2.Items[i].Text;
            Response.Write(k);
        }
    }

解决方案 »

  1.   

    是不是你没给text赋值啊 ,而只是给value赋值了. 正常情况下应该是有值的
      

  2.   

    你是不是没添加成功啊?成功了怎么取不到啊,this.select2.Items[i].Text这个是不是.value啊
      

  3.   

    你前台填充后,操作的只是生产页面的DOM对象,此时后台无法获知填充数据,只能提交后后台才能处理,既然你的SLECET改造成服务器控件来,为什么不在后台直接填充----个人看法!
      

  4.   

    提交到后台以后原来用js添加的东西应该都没有了吧!!
    用js添加的东西,如果想在后台用到的话,估计需要在提交到后台的之前用js获取填充到一个hidden里面的
      

  5.   

    我是想实现  2个 select,实现把左边select的内容移到右边去,也就是js动态添加内容,
    如果说用request,那就要再新建个page页来request,我想直接在本页处理,有什么好的办法吗,还有就是我不怎么喜欢右移用后台事件写,我觉得js写的比较好
      

  6.   

    提交到后台以后原来用js添加的东西应该都没有了吧!!用js添加的东西,如果想在后台用到的话,估计需要在提交到后台的之前用js获取填充到一个hidden里面的 
      

  7.   

    好像一回发就不行了<html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title></title>    <script type="text/javascript">
            function additemSelect() {
                var sel = document.getElementById('<%=select2.ClientID %>');
                sel.add(new Option("test1", 0));
                sel.add(new Option("test2", 1));        }
        </script></head>
    <body>
        <form id="form1" runat="server">
        <div>
            <select id="select2" style="height: 108px; width: 100px;" runat="server">
            </select>
            <input type="button" id="btn1" value="ADD" onclick="additemSelect()" />
            <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
        </div>
        </form>
    </body>
    </html>
    public partial class selectTest : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void Button1_Click(object sender, EventArgs e)
        {
            //string k = "";
            //for (int i = 0; i < this.select2.Items.Count; i++)
            //{
            //    k += this.select2.Items[i].Text;
            //    Response.Write(k);
            //}    }
    }
      

  8.   

    有位大哥,告诉我们这样的编程,经常需要拖一个服务器button,给他一个空的事件。。然后点点看,看看界面有没有变化。。
      

  9.   

    window.onload = function(){
        var o = document.getElementById("select1");
        for(var i=0;i<50;i++){
            o.options.add( new Option("UserName_"+i,i))
        }
    }<select id="select1" name="select1"></select>
    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Style="position: relative"            Text="Button" />
     string o = Request.Form["select1"];//這里獲取的是value值
            Response.Write("當前選擇的是" + o);
      

  10.   

    这不奇怪,本来就是这样的,如果你要在服务器端获取的话,可以这样:
    在提交时用javascript选中所有下拉框中的项,这样提交后通过Request.Form["下拉框name"]就能取到所有选中项的值,这个值是一个以,分隔的字符串===================================================
    ASP.NET WebForm和ASP.NET MVC分页最终解决之道
      

  11.   

    为了防止页面在postback后 页面变形吧。