请教一个简单的问题:
   1:我的aspx文件里面有一个
     <select name="DGFileUpload1:_ctl1" size="4" style="color:Red;width:310px;">
<option value="都市浪子.doc">都市浪子.doc</option>
         <option value="都市浪子.doc">都市浪子.doc</option>
         <option value="都市浪子.doc">都市浪子.doc</option>
     </select>
   我要把他用javascritp函数把它读出来,即一:写出这个javascript函数,一边下步返回一个数组 给服务端。
  2:在我的aspx.cs文件里面代码是怎么写的,包括注册和调用,一直写到一个cs里面的一个arrylist类型的数组里面(最主要的也是这个:是怎么读到javascript函数返回的数组然后返回给服务端的)。

解决方案 »

  1.   

    原理就是javascript借助dhtml的内置对象逐级逐级取得文本域的元素值之后通过http协议的get或post方法提交给服务端。
      

  2.   

    <script language="javascript">
    var aTmp = new Array();
    var tmpSel = document.getElementById("selTmp");
    for(var i=0; i<tmpSel.length; i++)
    {
       aTmp[i]=tmpSel.options[tmpSel.seletedIndex].value;
    }
    window.location="2.aspx?val="+aTmp;
    </script>
    <select name="DGFileUpload1:_ctl1" id="selTmp" size="4" style="color:Red;width:310px;">
    <option value="都市浪子.doc">都市浪子.doc</option>
             <option value="都市浪子.doc">都市浪子.doc</option>
             <option value="都市浪子.doc">都市浪子.doc</option>
         </select>
    2.aspx
    Array aTmp = new Array();
    aTmp = request.querystring("val");
    然后通过读取数组内容就可以了
      

  3.   

    to(梦想一定会实现!):
          先谢谢你,不过我不想通过连接到一个新页面然后再用传过去的URL参数的方式实现.因为那样回刷新整个页面!
    有别的办法吗?
      

  4.   

    tomtown530(梦想一定会实现!) ;
       就算用你这个方法也没用啊,因为我是同一个页面的操作.
      

  5.   

    在你不想刷新的页里加入
    <iframe name="iframe" id="iframe" width="0" height="0" src="about:blank"><iframe>
    <script language="javascript">
    var aTmp = new Array();
    var tmpSel = document.getElementById("selTmp");
    for(var i=0; i<tmpSel.length; i++)
    {
       aTmp[i]=tmpSel.options[tmpSel.seletedIndex].value;
    }
    var iframe = document.getElementById("iframe");
    iframe.src= "2.aspx?val=" + aTmp;
    </script>
    2.aspx
    Array aTmp;
    aTmp = new System.Array[10];
    aTmp = Request["val"].Split(',');
    for(int i=0; i< aTmp.Length; i++)
    {
    Response.Write(aTmp.Length);
    }
    测试了一下,还可以用,你再改改吧
      

  6.   


    最好把这个选择列表做成服务器端控件
    如果不好办,可以在网页上放一个隐藏的服务器端 TextBox, 比如其id为 TextBoxHiddle,可以用这样的方法把值放入  TextBoxHiddle中在后台中放入这样的代码public String TextBoxHiddleClientID
    {
     get
    {
    return TextBoxHiddle.ClientID;
    }
    }前台javascript 
    <script language="javascript">
    var aTmp = new Array();
    var tmpSel = document.getElementById("selTmp");
    for(var i=0; i<tmpSel.length; i++)
    {
       aTmp[i]=tmpSel.options[tmpSel.seletedIndex].value;
       document.all.<%=TextBoxHiddleClientID%>=document.all.<%=TextBoxHiddleClientID%>+aTmp[i]+";";
    }
    这样可以把值放入TextBoxHiddle中,后台程序可以用TextBoxHiddle.Text把值取出来,通过分割";"解析
      

  7.   

    charles_y(难得糊涂) (: 
          我拿你的测试了一下怎么取不出结果来?
      

  8.   

    在本页用js的脚本给服务器端控件Select赋值增加Option的话,再在服务器端是读取不到JS赋值的数据..唯一的解决办法就是:用一个Hidden控件,并将它设置为runat=server,然后再在select的onchange事件中把当前的selected赋值给Hidden控件..最后服务器端获取当前select的选中值就可以直接取得Hidden的值就可以了..参考我的文章:http://lixianhuei.cnblogs.com/archive/2005/08/04/207289.html
      

  9.   

    不我这里不是得到选择值,而是得到类试与listbox里面的全部的值啊.
      

  10.   

    使用如下语句调试通过<script language="javascript">
    function getData()
    {var tmpSel = document.getElementById("DGFileUpload1:_ctl1");
    for(var i=0; i<tmpSel.length; i++)
    {
       tmp=tmpSel.options[i].value;
       document.all.<%=TextBoxHiddleClientID%>.value=document.all.<%=TextBoxHiddleClientID%>.value+tmp+";";
    }
    }
    </script>
      

  11.   

    明白原理怎么操作都可以了
    charles_y(难得糊涂) 就是遍历所有的。提交的都是你选择的,要提交你所有的,必须用<input type=hidden name=x>传递
      

  12.   

    用ajax.net
    十分简单http://www.caae.com.cn/hdt
      

  13.   

    支持下  net_lover(孟子E章)
      

  14.   

    恩,谢谢孟子老大和charles_y(难得糊涂)
       to:charles_y(难得糊涂):
     我老取不到值,你是否可以把你的文件发给我?包括aspx和cs文件
    我的油箱:[email protected]
      

  15.   

    文件passdatatoback.aspx
    <%@ Page language="c#" Codebehind="PassDataToBack.aspx.cs" AutoEventWireup="false" Inherits="WebTest.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 getData()
    {var tmpSel = document.getElementById("DGFileUpload1:_ctl1");
    for(var i=0; i<tmpSel.length; i++)
    {
       tmp=tmpSel.options[i].value;
       document.all.<%=TextBoxHiddleClientID%>.value=document.all.<%=TextBoxHiddleClientID%>.value+tmp+";";
    }
    }
    </script>
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    &nbsp;&nbsp;
    <form id="Form1" method="post" runat="server">
    <FONT face="宋体">
    <select style="Z-INDEX: 101; LEFT: 48px; WIDTH: 310px; COLOR: red; POSITION: absolute; TOP: 104px"
    size="4" name="DGFileUpload1:_ctl1">
    <OPTION value="都市浪子.doc">都市浪子.doc</OPTION>
    <OPTION value="都市浪子.doc">都市浪子.doc</OPTION>
    <OPTION value="都市浪子.doc">都市浪子.doc</OPTION>
    </select></FONT>
    <asp:textbox id="TextBoxHiddle" style="Z-INDEX: 102; LEFT: 48px; POSITION: absolute; TOP: 200px"
    runat="server" Width="329px"></asp:textbox><asp:button id="Button1" style="Z-INDEX: 103; LEFT: 64px; POSITION: absolute; TOP: 296px" runat="server"
    Width="152px" Text="这个是服务器端按钮" Height="40px"></asp:button><INPUT style="Z-INDEX: 104; LEFT: 64px; WIDTH: 136px; POSITION: absolute; TOP: 248px; HEIGHT: 24px"
    type="button" onclick="getData()" value="把值存到TextBox中">
    </form>
    </SCRIPT>
    </body>
    </HTML>
    后台文件
    PassDataToBack.aspx.cs
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace WebTest
    {
    /// <summary>
    /// WebForm1 的摘要说明。
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Button Button1;
    protected System.Web.UI.WebControls.TextBox TextBoxHiddle;

    public String TextBoxHiddleClientID
    {
    get
    {
    return TextBoxHiddle.ClientID;
    }
    } private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    }
        
    #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Button1.Click += new System.EventHandler(this.Button1_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void Button1_Click(object sender, System.EventArgs e)
    {
    string testString=TextBoxHiddle.Text;
    }
    }
    }
      

  16.   

    其实这个程序主要是客户端的代码
    其中的document.all.<%=TextBoxHiddleClientID%>.value=document.all.<%=TextBoxHiddleClientID%>.value+tmp+";";
    改为
    document.all.TextBoxHiddle.value=document.all.TextBoxHiddle.value+tmp+";";
    也可以
    这个可以说跟服务器端根本就没有什么关系。
      

  17.   

    http://goody9807.cnblogs.com/archive/2005/09/14/236565.html
      

  18.   

    谢谢  charles_y(难得糊涂) , tomtown530(梦想一定会实现!) ,孟子大哥:难得糊涂谢谢你费了那么大的劲帮我,而孟子大哥是权威,呵呵,我的问题解决了,结贴了!十分感谢,其实csdn里面就是有大家这中互相帮助互相学习的精神吸引着人,我在csdn上学到了很多的东西!!