zoukankan      html  css  js  c++  java
  • 事件委托

    1、定义事件委托必须在类的外面定义;

    2、写事件关联(挂接),事件关联之前先写一个查询QueryStuInfo()【也就是事件的响应】

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.IO;
    
    using DAL;
    namespace StudentManagerPro.Students
    {
        public partial class StudentManage : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                //写事件关联,事件关联之前先写一个查询QueryStuInfo()【也就是事件的响应】
    
              //【5】将当前页面所用的用户控件事件和事件的响应方法关联
                this.StuQueryControl.StuQueryEvent += new UserControls.BindDataDelegate(this.QueryStuInfo);
    
                this.ltaMsg.Text = "";
            }
    
    
            //【4】编写响应用户的自定义事件(在这里绑定具体的查询结果)
            protected void QueryStuInfo()
            {
                //[4.1]在下面语句之前要把用户控件拖到页面中去
                this.rpList.DataSource = new StudentService().GetStudentByClass(this.StuQueryControl.ClassName);  //this.StuQueryControl .ClassName就是封装的属性
               this.rpList.DataBind();
            }
    
    
            //protected void btnQuery_Click(object sender, EventArgs e)
            //{
            //    //this.dlStuInfo.DataSource = new StudentService().GetStudentByClass(this.ddlClass.SelectedItem.Text.Trim());
            //    //this.dlStuInfo.DataBind();
    
            //    //this.rpList.DataSource = new StudentService().GetStudentByClass(this.ddlClass.SelectedItem.Text.Trim());
            //    //this.rpList.DataBind();
            //}
    
    
            #region 删除学员
            protected void btnDel_Click(object sender, EventArgs e)
            {
                //【1】获取要删除的学号      
                string studentId = ((LinkButton)sender).CommandArgument;
                try
                {
                    //【2】执行删除
                    int result = new StudentService().DeleteStudentById(studentId);
                    if (result == 1)
                    {
                        //【3】同步从服务器上删除图片
                        File.Delete(Server.MapPath("~/Images/Student/" + studentId + ".jpg"));
                        //【4】同步刷新(以后使用jQuery同步从前端删除)
                        QueryStuInfo();
                    }
                }
                catch (Exception ex)
                {
                    this.ltaMsg.Text = "<script>alert('" + ex.Message + "')</script>";
                }
            }
    
            #endregion
    
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    using DAL;
    using Models;
    
    namespace StudentManagerPro.UserControls
    {
        public partial class StuQueryControl : System.Web.UI.UserControl
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    this.ddlClass.DataSource = new StudentClassService().GetAllClass();
                    this.ddlClass.DataTextField = "ClassName";
                    this.ddlClass.DataValueField = "ClassId";
                    this.ddlClass.DataBind();
                }
            }
            //根据班级查询(有可能查询学员信息,也有可能查询成绩信息)(思路:把当前要完成的任务发布为一个事件,让使用者具体完成,
            //在这里我们需要做一个事件的接口)
            protected void btnQuery_Click(object sender, EventArgs e)
            {
                //在【3】激发事件之前,要做的事情之二:将当前班级信息保存到属性中
                this.ClassName = this.ddlClass.SelectedItem.Text.Trim();
                //[4]进入使用的页面,即StudentManage.aspx的后台类;
    
                //【3】激发事件(其实就是在关联后,调用用户所定义的事件响应方法)
                StuQueryEvent();
            }
    
            //在【3】激发事件之前,要做的事情之一:把班级名称定义成属性(目的:和外界交互的时候,对外提供)
            public string ClassName { get; set; }
    
    
            //【2】根据委托定义事件(在类的内部针对特定对象定义,当前是给自定义用户控件添加事件)
            public event BindDataDelegate StuQueryEvent;
    
        }
    
        //【1】定义事件委托(在类的外面定义)
        public delegate void BindDataDelegate();
    }
  • 相关阅读:
    【底层原理】四位计算机的原理及其实现
    ctags的如何生成tags文件
    nginx-1.12.0版本(编译安装)-自定义安装路径
    使用LVS实现负载均衡原理及安装配置详解
    【系统架构】亿级Web系统搭建(1):Web负载均衡
    9个Linux系统常用监控命令
    NetStat命令详解
    SQLSERVER CXPACKET 等待
    什么是PAGELATCH和PAGEIOLATCH
    CentOS环境变量配置并生效
  • 原文地址:https://www.cnblogs.com/atlj/p/8082191.html
Copyright © 2011-2022 走看看