这可能真的很简单,但是我似乎无法从父页面上完全掌握我的价值观吗?
Aspx页面位于母版页中,而ContentP具有代码(例如)
<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:TextBox ID="tbFromDate" runat="server" ></asp:TextBox>
<asp:Button ID="butDisplayInfo" runat="server" Text="Display info" OnClick="butDisplayInfo_Click"
CssClass="button-gray" />
<asp:PlaceHolder ID="placeHolderContent" runat="server">
</asp:PlaceHolder>
我想要的是,当按下按钮时,它会根据文本框中输入的日期加载UserControl并加载数据,然后可以使用该日期将数据加载到控件中?
.aspx.cs
protected void butDisplayInfo_Click(object sender, EventArgs e)
{
var ctrl = LoadControl("~/Controls/DailyShiftStats.ascx");
ctrl.ID = "ucUserCtrl1";
placeHolderContent.Controls.Add(ctrl);
}
用户控件ascx.cs
protected void Page_Load(object sender, EventArgs e)
{
TextBox tb = (TextBox)this.Parent.Page.FindControl("ContentPlaceHolder1").FindControl("tbFromDate");
Response.Write(tb.Text);
}
public void getShiftInfo(DateTime shiftDate)
{
//load my data
}
根据我的评论-您最好在控件中定义一个属性,然后让页面将其传递给我,我已经有一段时间没有这样做了,但是基本思想是-
在您的控制之下
public DateTime? ShiftDate
{
set { this.shiftDate = value; }
}
private DateTime? shiftDate;
然后,可以在控件中需要使用的任何位置使用shiftDate,如果如上所述将其设置为Nullable,则可以检查其是否已设置,如果没有,则抛出错误(或任何适当的错误)。
在创建控件时,您将在页面中看到(注意:您需要将控件强制转换为正确的类型)
var ctrl = (DailyShiftStats)LoadControl("~/Controls/DailyShiftStats.ascx");
ctrl.ID = "ucUserCtrl1";
//TODO: Handle an invalid date
DateTime shiftDate;
if (DateTime.TryParse(tbFromDate.Text, out shiftDate))
{
ctrl.ShiftDate = shiftDate;
}
placeHolderContent.Controls.Add(ctrl);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句