嗨,我想在看到不同的例子感到非常困惑之后,我需要一些澄清。
我正在创建一个带有 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);
}
无论如何我可以解决这个问题吗?我主要担心的是这会大大增加页面大小。
先感谢您。
此致
戴夫