- 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分页最终解决之道