web用户控件调用.aspx页面里的方法
今天做一个web用户控件里面有两个repeater一个是显示数据的,一个分页的。绑定数据部分我重写了绑定事件就搞定了。可是我是利用分页控件来控制repeater的数据,所以就用要到单击分页控件调用页面的绑定事件来重新去得不同页数的数据。在网上找了一下发现了以下这个方法。我在 分页控件的ItemCommand事件中
protected void repCtrl_ItemCommand(object source, RepeaterCommandEventArgs e)
{
Int32 count = Count;
Int32 pagesize = PageSize;
Int32 pageindex = PageIndex;
Int32 pi = count % pagesize == 0 ? count / pagesize : count / pagesize + 1;
if (e.CommandName == "page")
{
if (e.CommandArgument.ToString() == "next")
{
//分页处理部分省略
}
}
System.Web.UI.Page p = this.Page;
//用反射方法动态调用父页面的方法
Type pageType = p.GetType();
MethodInfo mi = pageType.GetMethod("BoundList");
mi.Invoke(p, new object[] { PageIndex, PageSize, SortField, OrderType });//new object[] {你要传递的参数
}
接下来是web .aspx页面的方法:
public void BoundList(int pageIndex, int pageSize, string sortFiled, short orderType)
{// 这里写相应的程序}
就这样就可以调用了。
ASP.NET母版页中调用内容页的方法
首先要在母版页定义委托(delegate ):
namespace NotSee.Web.Manage
{
public partial class Sys : System.Web.UI.MasterPage
{
public delegate void ElementSelectedChangeHandler();
//实例化委托,其实这也是一个属性
public ElementSelectedChangeHandler ElementSelectedChange { private get; set; }
protected void Page_Load(object sender, EventArgs e)
{//notsee.info技术交流分享
}
//母版里的按钮
protected void BtnSearch_Click(object sender, EventArgs e)
{
if (ElementSelectedChange != null)
{
ElementSelectedChange();
}
}
}
}
接着例如:notsee.aspx 内容页 我们需要在这个notsee.aspx页中指定一个与委托签名匹配的方法:
namespace WMS.Web.Manage
{
public partial class notsee: System.Web.UI.Page
{
Master.ElementSelectedChange = this.ElementSelectedChange;
protected void Page_Load(object sender, EventArgs e)
{//notsee.info技术交流分享
}
void ElementSelectedChange()
{
//您的处理方案
}
}
}
转自http://www.notsee.info/tech/tech.xml