我的母版页中有一个FromDate和ToDate文本框以及一个提交按钮。我有4个标签,其中包含4个不同URL的链接,显示各种报告。
现在更改日期并点击提交按钮,我可以根据日期更改更新/重新加载报告(标签)吗?
提前多多感谢:)
答案 0 :(得分:2)
我建议移动你的日期并将按钮提交给用户控件。然后,您可以将其放在每个报表上,公开并连接控件上已更改的事件,并公开您最新文本框的属性以弹出到报表中。
在Visual Studio中创建用户控件。如果您不确定如何执行此操作,请尝试this链接。
使用文本框填充用户控件。像这样:
<div>
<asp:Label ID="FromDateLabel" Text="From:" AssociatedControlID="FromDateTextBox" runat="server" />
<asp:TextBox ID="FromDateTextBox" runat="server" />
<asp:Label ID="ToDateLabel" Text="To:" AssociatedControlID="ToDateTextBox" runat="server" />
<asp:TextBox ID="ToDateTextBox" runat="server" />
<asp:Button ID="UpdateButton" Text="Update" runat="server"
onclick="UpdateButton_Click" />
</div>
该控件背后的代码。您需要公开一个事件和两个属性,可能如下所示:
public partial class ReportDateControl : System.Web.UI.UserControl
{
public event EventHandler UpdateReport;
public string FromDate
{
get { return this.FromDateTextBox.Text; }
set { this.FromDateTextBox.Text = value; }
}
public string ToDate
{
get { return this.ToDateTextBox.Text; }
set { this.ToDateTextBox.Text = value; }
}
protected void UpdateButton_Click(object sender, EventArgs e)
{
if (UpdateReport != null)
{
UpdateReport(this, EventArgs.Empty);
}
}
}
在你的.aspx页面中,你需要注册控件,这可能是这样的:
<%@ Register Src="~/Controls/ReportDateControl.ascx" TagPrefix="myapp" TagName="ReportDateControl" %>
然后实际把它放在页面上:
<myapp:ReportDateControl id="ReportDateControl"
runat="server"
OnUpdateReport="ReportDateControl_UpdateReport" />
然后连接后面的代码来处理更新事件:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void ReportDateControl_UpdateReport(object sender, EventArgs e)
{
Controls.ReportDateControl control = (Controls.ReportDateControl)sender;
string fromDate = control.FromDate;
string toDate = control.ToDate;
}
}
在适当的地方更改名称和格式,但这应该会给你一个好主意。
答案 1 :(得分:0)
此外,您可以从母版页公开Date控件,并通过Page.Master属性访问它们。您需要转换为特定类型的母版页以获取其属性。