日期:2014-05-18  浏览次数:20473 次

js填充的select如何在后台取值
C# code
<select id="select2" style="height: 108px;width:100px;"  runat="server" multiple="true">
            
        </select>



我用js往select2里添加了几项数据,现在用imagebutton单击事件来打印出这些项来,却打印出来是空的,


C# code
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);
        }
    }




------解决方案--------------------
填充后提交,否则后台不知道
------解决方案--------------------
是不是你没给text赋值啊 ,而只是给value赋值了. 正常情况下应该是有值的
------解决方案--------------------
用Request.Post来取
------解决方案--------------------
你是不是没添加成功啊?成功了怎么取不到啊,this.select2.Items[i].Text这个是不是.value啊
------解决方案--------------------
你前台填充后,操作的只是生产页面的DOM对象,此时后台无法获知填充数据,只能提交后后台才能处理,既然你的SLECET改造成服务器控件来,为什么不在后台直接填充----个人看法!
------解决方案--------------------
提交到后台以后原来用js添加的东西应该都没有了吧!!
用js添加的东西,如果想在后台用到的话,估计需要在提交到后台的之前用js获取填充到一个hidden里面的
------解决方案--------------------
应该可以。我来测试下
------解决方案--------------------
好像一回发就不行了。。。

HTML code
<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>

------解决方案--------------------
JScript code


window.onload = function(){
                var o = document.getElementById("select1");
                for(var i=0;i<50;i++){
                    o.options.add( new Option("UserName_"+i,i))
                }
            }

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

===================================================
ASP.NET WebForm和ASP.NET MVC分页最终解决之道