代码如下:
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication1.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<script language="javascript">
   function a()
   {
for (var i=0;i<10;i++)
{
  window.Form1.ListBox1.add(document.createElement("OPTION"));
  window.Form1.ListBox1.options[i].text = "第" + i + "个";
      window.Form1.ListBox1.options[i].value = "第" + i + "个";
}
   }
</script>
</HEAD>
<body ms_positioning="GridLayout">
<script src="calendar.js"></script>
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:TextBox id="TextBox2" style="Z-INDEX: 101; LEFT: 408px; POSITION: absolute; TOP: 40px" runat="server"
Height="392px"></asp:TextBox><INPUT style="Z-INDEX: 102; LEFT: 576px; POSITION: absolute; TOP: 408px" type="button"
value="Html按扭" onclick="a();"></FONT>
<asp:Button id="Button1" style="Z-INDEX: 103; LEFT: 664px; POSITION: absolute; TOP: 408px" runat="server"
Text="后台按扭"></asp:Button>
<asp:ListBox id="ListBox1" style="Z-INDEX: 104; LEFT: 168px; POSITION: absolute; TOP: 48px" runat="server"
Width="192px" Height="376px"></asp:ListBox>
</form>
</body>
</HTML>里面有一个Html的按扭和ASP.NET的按扭。点Html按扭后在前台ListBox里添加了10个项目,然后我点Button1这个后台按扭后执行如下:for (int i=0;i<this.ListBox1.Items.Count;i++)
{
   this.TextBox2.Text = this.ListBox1.Items[0].Text;
}
可后台里根本就没有发现ListBox里有项目存在。相同的问题,如果把ListBox 换成 TextBox就可以。请问这该怎么处理呢?多谢。。

解决方案 »

  1.   

    这是个老问题.一般的处理方式用一个width为0的TextBox记录ListBox1中的内容,在后台再对TextBox中的内容分组处理.
      

  2.   

    确实用hidden可以,不过我问一下,我是用 如下语句在建立hidden的
    for (var i=0;i<10;i++)
    {
      window.Form1.ListBox1.add(document.createElement("OPTION"));
      window.Form1.ListBox1.options[i].text = "第" + i + "个";
      window.Form1.ListBox1.options[i].value = "第" + i + "个";
      window.Form1.appendChild(document.createElement("<input type=hidden name='a" + i + "' value='" + window.Form1.ListBox1.options[i].value +"' >"));
    }
    这里的用的是createElement来添加的,那用什么函数来消除hidden元素呢?多谢。。
      

  3.   

    还有,在后台处理里,用this.Request.Form["a1"] 只能获取一个hidden的值,该如何获取所有的hidden的值呢,因为是动态生成的hidden,所以个数不定。 
    多谢了,我真的很着急。。
      

  4.   

    for(int i = 0;i<10;i++)
    xx=this.Request.Form["a"+i.ToString()];
      

  5.   

    你也可以把所有的选项放到一个hidden里s=""
    for (var i=0;i<10;i++)
    {
      window.Form1.ListBox1.add(document.createElement("OPTION"));
      window.Form1.ListBox1.options[i].text = "第" + i + "个";
      window.Form1.ListBox1.options[i].value = "第" + i + "个";
    s+=window.Form1.ListBox1.options[i].value + ","}
      window.Form1.appendChild(document.createElement("<input type=hidden name='a" + i + "' value='" + s +"' >"));
      

  6.   

    for(int i = 0;i<10;i++)
    {
        xx=this.Request.Form["a"+i.ToString();
    }
      

  7.   

    在Page_Load里面中断,然后看看Page.Request.Params.一般List只回传选中的项,所以用hidden比较保险。
      

  8.   

    在Page_Load里面中断,然后看看Page.Request.Params.一般List只回传选中的项,所以用hidden比较保险。------------------------------------------------------
    up