웹 페이지(aspx)와 사용자 컨트롤(ascx)의 상호작용 논리 처리 실현

여러 페이지(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" />
&nbsp;<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 코드 예시:

좋은 웹페이지 즐겨찾기