程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> 網頁(aspx)與用戶控件(ascx)交互邏輯處理實現

網頁(aspx)與用戶控件(ascx)交互邏輯處理實現

編輯:ASP.NET基礎
幾個頁面(ASPX)都使用一些相同的控件,一個文本框,二個按鈕(搜索和導出),為了以後好維護,把這相同的部分抽取放在一個用戶控件(ASCX)上。現需要處理邏輯如下

搜索事件處理的邏輯在各個頁面處理。 問題是按鈕在用戶控件內,Click事件怎樣寫在各個頁面上?
每個頁面的搜索結果不同的格式,因此把結果顯示於各自的頁面上。

用戶控件的導出默認是Enabled="false" ,當有搜索結果時,它才會變為true。 它怎樣知道各個頁面是否已經有了結果?

用戶控件的文本框的值,作為搜索條件,也就是每個頁面的執行方法的參數。 aspx怎樣獲取用戶控件ascx內的文本框的值?

下面是ascx:
復制代碼 代碼如下:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="SearchForm.ascx.cs" Inherits="System_Assets_Report_SearchForm" %>
<div style="margin: 3px;">
資產編號 <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="導出至Excel" OnClick="ButtonExport_Click" Enabled="false" />
</div>

為了解決搜索的Click事件在各個頁面執行,Insus.NET在用戶控件使用委托(delegate):
復制代碼 代碼如下:
public delegate void SearchEventHandler(object sender, EventArgs e);
public delegate void ExportEventHandler(object sender, EventArgs e);

另外為了搜索結果是否有記錄,對應導出铵鈕是否禁用與啟用,因此在用戶控件寫一個帶參的方法:
復制代碼 代碼如下:
public void EnabledExportButton(bool enabled)
{
this.ButtonExport.Enabled = enabled;
}

還有就是為了把用戶控件的文本框的值帶結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代碼示例:
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved