【问题标题】:Master Page controllers event handle in content page内容页面中的母版页控制器事件句柄
【发布时间】:2013-08-20 18:52:03
【问题描述】:

我有一个包含图像按钮和 GridView 的母版页。

<asp:ImageButton ID="ImageButton2" runat="server" Height="48px" ImageUrl="~/IconsPack/Add.png" ToolTip="Add Record" CssClass="morph" Width="48px"/>

        <asp:GridView ID="GridView1" runat="server" CssClass="EU_DataTable" EmptyDataText="No Data Available.">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:CheckBox ID="CheckBox1" runat="server" />  
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>

在我的内容页面 (.aspx) 中,我可以将数据源附加到我的 gridview 并且效果很好。需要帮助的地方是..我想在我的内容页面(.aspx)中处理图像按钮的事件(以及与gridview交互)再次,图像按钮和gridview在master中并且它将在加载内容页面时填充。我想做的一个例子.. grive 视图里面有一个复选框..所以我想检查它的特定行并单击图像按钮删除该行。听起来可能有点混乱..如果有人不明白..我可以进一步解释。请协助..我迷路了。

【问题讨论】:

  • 为什么要让内容页处理母版页的事件,而母版页肯定能够处理自己的事件?
  • @KarlAnderson 因为母版页充当了一个模板,它有一个空的 gridview 和一些按钮(添加、编辑、删除)。它位于内容页面,gridview 将获取数据并进行处理。

标签: asp.net vb.net c#-4.0 master-pages content-pages


【解决方案1】:

你可以这样做:

在母版页代码隐藏中:

public event EventHandler MasterControlClicked;

protected void ImageButton2_Click(object sender, EventArgs e)
{
    OnMasterControlClick(e);

}

protected void OnMasterControlClick(EventArgs e)
{
    if (this.MasterControlClicked != null)
    {
        this.MasterControlClicked(this, e);
    }
}

在内容页面中:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);

    if (this.Master is SiteMaster)
    {
        ((SiteMaster)this.Master).MasterControlClicked += new EventHandler(ContentControlClicked);
    }
}

private void ContentControlClicked(object sender, EventArgs e)
{
    //do whatever you need
}

【讨论】:

  • SiteMaster 找不到:/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-20
  • 1970-01-01
  • 1970-01-01
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多