C# - 从主页面重新加载标签

时间:2011-06-07 18:15:49

标签: c# asp.net tabs master-pages

我的母版页中有一个FromDate和ToDate文本框以及一个提交按钮。我有4个标签,其中包含4个不同URL的链接,显示各种报告。

现在更改日期并点击提交按钮,我可以根据日期更改更新/重新加载报告(标签)吗?

提前多多感谢:)

2 个答案:

答案 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属性访问它们。您需要转换为特定类型的母版页以获取其属性。