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