【发布时间】:2011-06-07 18:15:48
【问题描述】:
我的母版页中有一个 FromDate 和 ToDate 文本框以及一个提交按钮。我有 4 个选项卡,其中包含用于显示各种报告的 4 个不同 URL 的链接。
现在更改日期并单击提交按钮后,我可以根据日期更改更新/重新加载报告(选项卡)吗?
提前非常感谢:)
【问题讨论】:
标签: c# asp.net tabs master-pages
我的母版页中有一个 FromDate 和 ToDate 文本框以及一个提交按钮。我有 4 个选项卡,其中包含用于显示各种报告的 4 个不同 URL 的链接。
现在更改日期并单击提交按钮后,我可以根据日期更改更新/重新加载报告(选项卡)吗?
提前非常感谢:)
【问题讨论】:
标签: c# asp.net tabs master-pages
我建议将您的开始日期和提交按钮移至用户控件。然后,您可以将其放在每个报告中,在您的控件上公开和连接更改的事件,并为您的当前文本框公开属性以弹出到您的报告中。
在 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;
}
}
在适当的地方更改名称和格式,但这应该会给你一个好主意。
【讨论】:
此外,您可以从母版页公开 Date 控件并通过 Page.Master 属性访问它们。您需要转换为母版页的特定类型才能获取其属性。
【讨论】: