zoukankan      html  css  js  c++  java
  • 网页(aspx)与用户控件(ascx)交互与逻辑处理

    几个页面(ASPX)都使用一些相同的控件,一个文本框,二个按钮(搜索和导出),为了以后好维护,Insus.NET把这相同的部分抽取放在一个用户控件(ASCX)上。现需要处理逻辑如下

    搜索事件处理的逻辑在各个页面处理。 问题是按钮在用户控件内,Click事件怎样写在各个页面上?

    每个页面的搜索结果不同的格式,因此把结果显示于各自的页面上。

    用户控件的导出默认是Enabled="false" ,当有搜索结果时,它才会变为true。  它怎样知道各个页面是否已经有了结果?

    用户控件的文本框的值,作为搜索条件,也就是每个页面的执行方法的参数。 aspx怎样获取用户控件ascx内的文本框的值?

    下面是ascx:

    View Code
    <%@ 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):

    View Code
     public delegate void SearchEventHandler(object sender, EventArgs e);
        public delegate void ExportEventHandler(object sender, EventArgs e);


    另外为了搜索结果是否有记录,对应导出铵钮是否禁用与启用,因此在用户控件写一个带参的方法:

    View Code
     public void EnabledExportButton(bool enabled)
        {
            this.ButtonExport.Enabled = enabled;
        }

    还有就是为了把用户控件的文本框的值带结aspx.cs页面,还需要写一个修饰符为public的方法:

    View Code
     public string GetAssetsNumber()
        {
            return this.TextBoxAssetsNumber.Text.Trim();
        }


    完整的ascx.cs代码:

    View Code
    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代码示例:

  • 相关阅读:
    scala之伴生对象的继承
    scala之伴生对象说明
    “Failed to install the following Android SDK packages as some licences have not been accepted” 错误
    PATH 环境变量重复问题解决
    Ubuntu 18.04 配置java环境
    JDBC的基本使用2
    DCL的基本语法(授权)
    ZJNU 1374
    ZJNU 2184
    ZJNU 1334
  • 原文地址:https://www.cnblogs.com/insus/p/2951161.html
Copyright © 2011-2022 走看看