在多个地方使用了3个下拉列表。所以我决定将它们放在userControl中。
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="DetailsDropDownList.ascx.vb"
Inherits="UserControls_DetailsDropDownList" %>
<asp:DropDownList ID="dedMoth" runat="server"></asp:DropDownList>
<asp:DropDownList ID="dedDay" runat="server"></asp:DropDownList>
<asp:DropDownList ID="dedYear" runat="server"></asp:DropDownList>
在后面的代码中,我定义了一个属性,以便捕获要显示的值。
public DateTime DetailsDate { get; set; }
所以我以这种方式设置属性:myUserControl.DetailsDate = myObject.myDate
问题是没有设置任何值。当我设置断点时,我注意到UserControl的生命周期在主页面之后开始。
我也试过这个,但没有运气。
<uc1:DetailsDropDownList runat="server" ID="myUserControl"
DetailsDate ="<%= myObject.myDate%>" />
那么如何设置UserControl的值?
答案 0 :(得分:1)
添加Page.DataBind();在Page_Load()事件中。这将绑定页面数据。一旦调试器通过页面加载检查预期日期即将到来。
答案 1 :(得分:1)
你需要坚持你的财产。如果不这样做,它会在页面加载时重置,就像任何其他局部变量一样。你可以很容易地坚持到viewstate,尽管如此:
public DateTime DetailsDate
{
get{
if(ViewState["DetailsDate"] == null)
{
return DateTime.Today;
}
else
{
return (DateTime)ViewState["DetailsDate"];
}
}
set {ViewState["DetailsDate"] = value;}
}