出生日期:
            <select runat="server" id="selYear" name="selYear" onserverchange="selYear_ServerChange">
            </select>
            年
            <select runat="server" id="selMonth" name="selMonth">
            </select>
            月
            <select runat="server" id="selDay" name="selDay">
            </select>
            日            <script type="text/javascript">
            var selYear = window.document.getElementById("selYear");
            var selMonth = window.document.getElementById("selMonth");
            var selDay = window.document.getElementById("selDay");            // 新建一个DateSelector类的实例,将三个select对象传进去
            new DateSelector(selYear, selMonth ,selDay);
            </script>我是做了一个动态生成的日期3级级联菜单我后台取不出来选中的值我是C#后台请高手帮助下

解决方案 »

  1.   

    selYear.Value 或 Request.Form["selYear"]
      

  2.   

    在后台selMonth.Value 这样取或设置selMonth的值
      

  3.   

    <script type="text/javascript"> 
                var selYear = document.getElementById("selYear").value; 
                var selMonth = document.getElementById("selMonth").value; 
                var selDay = document.getElementById("selDay").value;             // 新建一个DateSelector类的实例,将三个select对象传进去 
                new DateSelector(selYear, selMonth ,selDay); 
                </script> 
      

  4.   

    后台代码怎么写的或者用ajax取值吧,这样用户体验好点
      

  5.   

    select里面都没有绑定数值,当然取不出数
      

  6.   


    如果你绑定了値,上面的方法就能解决了。window.document.getElementById("selYear")只是获取了这个控件的对象,不是控件的値
      

  7.   

    你的意思是想在前台给3个select付值,然后在后台再将3个select中的值取出来吧;
    如果真是这样,取不到值是正常的
      

  8.   


    实现一个日期下拉菜单<%@ Page Language="C#" AutoEventWireup="true" EnableEventValidation="false" 
    CodeFile="Select.aspx.cs" Inherits="Select" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
    Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
        <script type="text/javascript">
    function DateSelector(selYear, selMonth, selDay)
    {
        this.selYear = selYear;
        this.selMonth = selMonth;
        this.selDay = selDay;
        this.selYear.Group = this;
        this.selMonth.Group = this;
        // 给年份、月份下拉菜单添加处理onchange事件的函数
        if(window.document.all != null) // IE
        {
            this.selYear.attachEvent("onchange", DateSelector.Onchange);
            this.selMonth.attachEvent("onchange", DateSelector.Onchange);
        }
        else // Firefox
        {
            this.selYear.addEventListener("change", DateSelector.Onchange, false);
            this.selMonth.addEventListener("change", DateSelector.Onchange, false);
        }    if(arguments.length == 4) // 如果传入参数个数为4,最后一个参数必须为Date对象
            this.InitSelector(arguments[3].getFullYear(), arguments[3].getMonth() + 1, arguments[3].getDate());
        else if(arguments.length == 6) // 如果传入参数个数为6,最后三个参数必须为初始的年月日数值
            this.InitSelector(arguments[3], arguments[4], arguments[5]);
        else // 默认使用当前日期
        {
            var dt = new Date();
            this.InitSelector(dt.getFullYear(), dt.getMonth() + 1, dt.getDate());
        }
    }// 增加一个最大年份的属性
    DateSelector.prototype.MinYear = 1900;// 增加一个最大年份的属性
    DateSelector.prototype.MaxYear = (new Date()).getFullYear();// 初始化年份
    DateSelector.prototype.InitYearSelect = function()
    {
        // 循环添加OPION元素到年份select对象中
        for(var i = this.MaxYear; i >= this.MinYear; i--)
        {
            // 新建一个OPTION对象
            var op = window.document.createElement("OPTION");
            
            // 设置OPTION对象的值
            op.value = i;
            
            // 设置OPTION对象的内容
            op.innerHTML = i;
            
            // 添加到年份select对象
            this.selYear.appendChild(op);
        }
    }// 初始化月份
    DateSelector.prototype.InitMonthSelect = function()
    {
        // 循环添加OPION元素到月份select对象中
        for(var i = 1; i < 13; i++)
        {
            // 新建一个OPTION对象
            var op = window.document.createElement("OPTION");
            
            // 设置OPTION对象的值
            op.value = i;
            
            // 设置OPTION对象的内容
            op.innerHTML = i;
            
            // 添加到月份select对象
            this.selMonth.appendChild(op);
        }
    }// 根据年份与月份获取当月的天数
    DateSelector.DaysInMonth = function(year, month)
    {
        var date = new Date(year, month, 0);
        return date.getDate();
    }// 初始化天数
    DateSelector.prototype.InitDaySelect = function()
    {
        // 使用parseInt函数获取当前的年份和月份
        var year = parseInt(this.selYear.value);
        var month = parseInt(this.selMonth.value);
        
        // 获取当月的天数
        var daysInMonth = DateSelector.DaysInMonth(year, month);
        
        // 清空原有的选项
        this.selDay.options.length = 0;
        // 循环添加OPION元素到天数select对象中
        for(var i = 1; i <= daysInMonth ; i++)
        {
            // 新建一个OPTION对象
            var op = window.document.createElement("OPTION");
            
            // 设置OPTION对象的值
            op.value = i;
            
            // 设置OPTION对象的内容
            op.innerHTML = i;
            
            // 添加到天数select对象
            this.selDay.appendChild(op);
        }
    }// 处理年份和月份onchange事件的方法,它获取事件来源对象(即selYear或selMonth)
    // 并调用它的Group对象(即DateSelector实例,请见构造函数)提供的InitDaySelect方法重新初始化天数
    // 参数e为event对象
    DateSelector.Onchange = function(e)
    {
        var selector = window.document.all != null ? e.srcElement : e.target;
        selector.Group.InitDaySelect();
    }// 根据参数初始化下拉菜单选项
    DateSelector.prototype.InitSelector = function(year, month, day)
    {
        // 由于外部是可以调用这个方法,因此我们在这里也要将selYear和selMonth的选项清空掉
        // 另外因为InitDaySelect方法已经有清空天数下拉菜单,因此这里就不用重复工作了
        this.selYear.options.length = 0;
        this.selMonth.options.length = 0;
        
        // 初始化年、月
        this.InitYearSelect();
        this.InitMonthSelect();
        
        // 设置年、月初始值
        this.selYear.selectedIndex = this.MaxYear - year;
        this.selMonth.selectedIndex = month - 1;
        
        // 初始化天数
        this.InitDaySelect();
        
        // 设置天数初始值
        this.selDay.selectedIndex = day - 1;
    }
    </script>
    </head>
    <body>
        <form id="form1" runat="server">    <select id="selYear"></select>
    <select id="selMonth"></select>
    <select id="selDay"></select>
    <script type="text/javascript">
    var selYear = window.document.getElementById("selYear");
    var selMonth = window.document.getElementById("selMonth");
    var selDay = window.document.getElementById("selDay");// 新建一个DateSelector类的实例,将三个select对象传进去
    new DateSelector(selYear, selMonth ,selDay, 2004, 2, 29);
    // 也可以试试下边的代码
    // var dt = new Date(2004, 1, 29);
    // new DateSelector(selYear, selMonth ,selDay, dt);
    function setValue()
    {
        var year=document.getElementById("selYear").value;
        var month=document.getElementById("selMonth").value;
        var day=document.getElementById("selDay").value;    
        document.getElementById("<%=hidDate.ClientID %>").value=year+"|"+month+"|"+day;
    }</script>
    <asp:Button ID="btnSubmit" runat="server" Text="回发" OnClientClick="setValue();" OnClick="btnSubmit_Click" />
    <asp:HiddenField ID="hidDate" runat="server" />
        </form>
    </body>
    </html>
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class Select : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            string[] dateStr = hidDate.Value.Split('|');
            if (dateStr.Length == 3)
                Response.Write(dateStr[0] + " 年" + dateStr[1] + " 月" + dateStr[2] + "日");
        }
    }