嗨,我想在看到不同的例子感到非常困惑之后,我需要一些澄清。
我正在创建一个带有 3 个下拉框的自定义日期控件,有点像你在 Facebook 的登录页面上看到的。
我的控件在其客户端功能方面工作正常,当尝试检索值服务器端时出现问题。
似乎当我通过 JavaScript 填充下拉列表时,当我转到服务器端时,它完全不知道所选值。
在阅读之后,我决定将子控件移至 OnInit 函数,在此我调用注册启动脚本以通过 JavaScript 填充下拉列表。
从那以后,我不得不更改它以添加服务器端的值。到目前为止,它看起来像这样。
  protected override void OnInit(EventArgs e)
    {
        /* create controls and add some JavaScript stuff here*/
        /*Problem below*/
        if (!Page.IsPostBack)
        {
            /* These seemably have to be here inspite the fact we can populate with java, issue: on postback selected values are lost. */
            for (int i = 1; i <= 31; i++)
            {
                ddlDay.Items.Add(new ListItem(i.ToString()));
            }
            for (int i = 1; i <= 12; i++)
            {
                ddlMonth.Items.Add(new ListItem(i.ToString()));
            }
            for (int i = 1901; i <= 2012; i++)
            {
                ddlYear.Items.Add(new ListItem(i.ToString()));
            }
        }
        ScriptManager.RegisterStartupScript(this, Page.GetType(), Guid.NewGuid().ToString(), "<script type='text/javascript'>DateControlRender(document.getElementById('" + this.ClientID + "'));</script>", false);
        base.OnInit(e);
    }
无论如何我可以解决这个问题吗?我主要担心的是这会大大增加页面大小。
先感谢您。
此致
戴夫