網(wǎng)頁(aspx)與用戶控件(ascx)交互邏輯處理實現(xiàn)
更新時間:2013年03月22日 14:57:11 作者:
為了以后好維護(hù),把幾個頁面(ASPX)相同的部分抽取放在一個用戶控件(ASCX)上,現(xiàn)在把邏輯分享下,感興趣的各位可以參考下哈
幾個頁面(ASPX)都使用一些相同的控件,一個文本框,二個按鈕(搜索和導(dǎo)出),為了以后好維護(hù),把這相同的部分抽取放在一個用戶控件(ASCX)上?,F(xiàn)需要處理邏輯如下
搜索事件處理的邏輯在各個頁面處理。 問題是按鈕在用戶控件內(nèi),Click事件怎樣寫在各個頁面上?
每個頁面的搜索結(jié)果不同的格式,因此把結(jié)果顯示于各自的頁面上。
用戶控件的導(dǎo)出默認(rèn)是Enabled="false" ,當(dāng)有搜索結(jié)果時,它才會變?yōu)閠rue。 它怎樣知道各個頁面是否已經(jīng)有了結(jié)果?
用戶控件的文本框的值,作為搜索條件,也就是每個頁面的執(zhí)行方法的參數(shù)。 aspx怎樣獲取用戶控件ascx內(nèi)的文本框的值?
下面是ascx:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="SearchForm.ascx.cs" Inherits="System_Assets_Report_SearchForm" %>
<div style="margin: 3px;">
資產(chǎn)編號 <asp:TextBox ID="TextBoxAssetsNumber" runat="server" CssClass="textbox" Height="20px" ></asp:TextBox>
<asp:Button ID="ButtonSearch" runat="server" Text="Search" OnClick="ButtonSearch_Click" />
<asp:Button ID="ButtonExport" runat="server" Text="導(dǎo)出至Excel" OnClick="ButtonExport_Click" Enabled="false" />
</div>
為了解決搜索的Click事件在各個頁面執(zhí)行,Insus.NET在用戶控件使用委托(delegate):
public delegate void SearchEventHandler(object sender, EventArgs e);
public delegate void ExportEventHandler(object sender, EventArgs e);
另外為了搜索結(jié)果是否有記錄,對應(yīng)導(dǎo)出銨鈕是否禁用與啟用,因此在用戶控件寫一個帶參的方法:
public void EnabledExportButton(bool enabled)
{
this.ButtonExport.Enabled = enabled;
}
還有就是為了把用戶控件的文本框的值帶結(jié)aspx.cs頁面,還需要寫一個修飾符為public的方法:
public string GetAssetsNumber()
{
return this.TextBoxAssetsNumber.Text.Trim();
}
完整的ascx.cs代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;
public partial class System_Assets_Report_SearchForm : BaseUserControl
{
public delegate void SearchEventHandler(object sender, EventArgs e);
public delegate void ExportEventHandler(object sender, EventArgs e);
public event SearchEventHandler SearchClick;
public event ExportEventHandler ExportClick;
public string GetAssetsNumber()
{
return this.TextBoxAssetsNumber.Text.Trim();
}
public void EnabledExportButton(bool enabled)
{
this.ButtonExport.Enabled = enabled;
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void ButtonSearch_Click(object sender, EventArgs e)
{
if (SearchClick != null)
SearchClick(this, e);
}
protected void ButtonExport_Click(object sender, EventArgs e)
{
if (ExportClick != null)
ExportClick(this, e);
}
}
各個aspx頁,下面只列示一頁:
.aspx.cs代碼示例:
搜索事件處理的邏輯在各個頁面處理。 問題是按鈕在用戶控件內(nèi),Click事件怎樣寫在各個頁面上?
每個頁面的搜索結(jié)果不同的格式,因此把結(jié)果顯示于各自的頁面上。
用戶控件的導(dǎo)出默認(rèn)是Enabled="false" ,當(dāng)有搜索結(jié)果時,它才會變?yōu)閠rue。 它怎樣知道各個頁面是否已經(jīng)有了結(jié)果?
用戶控件的文本框的值,作為搜索條件,也就是每個頁面的執(zhí)行方法的參數(shù)。 aspx怎樣獲取用戶控件ascx內(nèi)的文本框的值?
下面是ascx:
復(fù)制代碼 代碼如下:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="SearchForm.ascx.cs" Inherits="System_Assets_Report_SearchForm" %>
<div style="margin: 3px;">
資產(chǎn)編號 <asp:TextBox ID="TextBoxAssetsNumber" runat="server" CssClass="textbox" Height="20px" ></asp:TextBox>
<asp:Button ID="ButtonSearch" runat="server" Text="Search" OnClick="ButtonSearch_Click" />
<asp:Button ID="ButtonExport" runat="server" Text="導(dǎo)出至Excel" OnClick="ButtonExport_Click" Enabled="false" />
</div>
為了解決搜索的Click事件在各個頁面執(zhí)行,Insus.NET在用戶控件使用委托(delegate):
復(fù)制代碼 代碼如下:
public delegate void SearchEventHandler(object sender, EventArgs e);
public delegate void ExportEventHandler(object sender, EventArgs e);
另外為了搜索結(jié)果是否有記錄,對應(yīng)導(dǎo)出銨鈕是否禁用與啟用,因此在用戶控件寫一個帶參的方法:
復(fù)制代碼 代碼如下:
public void EnabledExportButton(bool enabled)
{
this.ButtonExport.Enabled = enabled;
}
還有就是為了把用戶控件的文本框的值帶結(jié)aspx.cs頁面,還需要寫一個修飾符為public的方法:
復(fù)制代碼 代碼如下:
public string GetAssetsNumber()
{
return this.TextBoxAssetsNumber.Text.Trim();
}
完整的ascx.cs代碼:
復(fù)制代碼 代碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;
public partial class System_Assets_Report_SearchForm : BaseUserControl
{
public delegate void SearchEventHandler(object sender, EventArgs e);
public delegate void ExportEventHandler(object sender, EventArgs e);
public event SearchEventHandler SearchClick;
public event ExportEventHandler ExportClick;
public string GetAssetsNumber()
{
return this.TextBoxAssetsNumber.Text.Trim();
}
public void EnabledExportButton(bool enabled)
{
this.ButtonExport.Enabled = enabled;
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void ButtonSearch_Click(object sender, EventArgs e)
{
if (SearchClick != null)
SearchClick(this, e);
}
protected void ButtonExport_Click(object sender, EventArgs e)
{
if (ExportClick != null)
ExportClick(this, e);
}
}
各個aspx頁,下面只列示一頁:

.aspx.cs代碼示例:

相關(guān)文章
asp.net+xml+flash實現(xiàn)的圖片展示效果示例
這篇文章主要介紹了asp.net+xml+flash實現(xiàn)的圖片展示效果的方法,結(jié)合實例形式較為詳細(xì)的分析了圖片展示效果的相關(guān)操作步驟與flash與xml調(diào)用的相關(guān)技巧,需要的朋友可以參考下2016-08-08.Net Core 之 Ubuntu 14.04 部署過程(圖文詳解)
本篇文章主要介紹了.Net Core 之 Ubuntu 14.04 部署過程(圖文詳解),有興趣的可以了解一下。2016-11-11ASP.NET獲取各級目錄Server.MapPath詳解全
ASP.NET獲取各級目錄Server.MapPath詳解全,需要的朋友可以參考下。2011-12-12gridview行索引獲取方法及實現(xiàn)代碼(非js版)
前一篇是用Javascript獲取GridView的行索引,此篇Insus.NET使用非Javascript獲取GridView的行索引,感興趣的朋友可以了解下2013-01-01Asp.net開發(fā)之webform圖片水印和圖片驗證碼的實現(xiàn)方法
這篇文章主要介紹了Asp.net開發(fā)之webform圖片水印和圖片驗證碼的實現(xiàn)方法,實現(xiàn)思路分為前后臺代碼和效果展示,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-10-10詳解VS2017 Linux 上.NET Core調(diào)試
這篇文章主要介紹了詳解VS2017 Linux 上.NET Core調(diào)試,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04.net MVC 連接數(shù)據(jù)本地數(shù)據(jù)庫三種方法總結(jié)
這篇文章主要介紹了.net MVC 連接數(shù)據(jù)本地數(shù)據(jù)庫三種方法總結(jié)的相關(guān)資料,這里附有代碼實例,需要的朋友可以參考下2016-12-12