CSV出力ボタンラッパー(asp.net)[イベントの作り方に役立つ]

为什么80%的码农都做不了架构师?>>>   hot3.png

    /// <summary>
    /// CSV出力ボタンラッパー。
    /// </summary>
    public class CsvOutputButtonWrapper
    {
        /// <summary>
        /// CSV出力ボタン
        /// </summary>
        private Button btnOutputCsv;

        /// <summary>
        /// CSVファイル名
        /// </summary>
        private string csvFileName;

        /// <summary>
        /// ヘッダー行
        /// </summary>
        private GridViewRow headerRow;

        /// <summary>
        /// HttpResponse
        /// </summary>
        HttpResponse response;

        /// <summary>
        /// 検索条件をCSV形式へ変換するイベントハンドル
        /// </summary>
        /// <returns></returns>
        public delegate string ConvertConditionEventHandler();

        /// <summary>
        /// 一覧データをCSV形式へ変換するイベントハンドル
        /// </summary>
        /// <returns></returns>
        public delegate string ConvertListEventHandler();

        /// <summary>
        /// 検索条件をCSV形式へ変換するイベント
        /// </summary>
        public event ConvertConditionEventHandler ConvertCondition;

        /// <summary>
        /// 一覧データをCSV形式へ変換するイベント
        /// </summary>
        public event ConvertListEventHandler ConvertList;

        /// <summary>
        /// CSVボタンのクリックイベント
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOutputCsv_Click(object sender, EventArgs e)
        {
            // CSVファイルを生成し、出力する
            FileUtil.OutputCSV(response, this.csvFileName, CreateCSVFile());
        }

        /// <summary>
        /// CSV出力ファイルの内容を作る
        /// </summary>
        /// <returns></returns>
        private byte[] CreateCSVFile()
        {
            StringBuilder sb = new StringBuilder();
            Encoding encoding = Encoding.GetEncoding("Shift-JIS");

            if (this.ConvertCondition != null)
            {
                // 検索条件
                sb.Append(this.ConvertCondition());

                // 空行
                sb.AppendLine(string.Empty);
            }

            if (this.ConvertList != null)
            {
                // グリッドのヘッダー行
                if (this.headerRow != null)
                    sb.AppendLine(PageUtil.ConvertGridViewHeaderToCSV(this.headerRow));

                // グリッドのデータ行
                sb.Append(this.ConvertList());
            }
            return encoding.GetBytes(sb.ToString());
        }

        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="btnOutputCsv">CSV出力ボタン</param>
        /// <param name="csvFileName">CSVファイル名</param>
        /// <param name="headerRow">ヘッダー行</param>
        /// <param name="response">HttpResponse</param>
        public CsvOutputButtonWrapper(Button btnOutputCsv, string csvFileName, GridViewRow headerRow, HttpResponse response)
        {
            this.btnOutputCsv = btnOutputCsv;
            this.csvFileName = csvFileName;
            this.headerRow = headerRow;
            this.response = response;
            this.btnOutputCsv.Click += new EventHandler(btnOutputCsv_Click);
        }
    }

转载于:https://my.oschina.net/cjkall/blog/195902

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251671.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

结构体变量字节填充

二&#xff1a; &#xff08;1&#xff09;sizeof也可以对一个函数调用求值&#xff0c;其结果是函数返回类型的大小&#xff0c;函数并不会被调用。 &#xff08;2&#xff09;终于搞懂struct结构体内存分配问题了&#xff0c;结构体中各个成员字节对齐遵循以下几个原则&#…

iOS GoldRaccoon第三方FTP文件夹下载失败原因

一、问题描述&#xff1a;1.下载失败报错&#xff1a; 文件写入失败Error DomainNSCocoaErrorDomain Code512 "未能将文件“jquery_1_10_2_min.js”存储到文件夹“Q20180104153006399”中。" 原因及解决方法&#xff1a;文件夹下均为文件&#xff0c;不包含子文件夹&…

项目UML设计(团队)

团队信息 队名&#xff1a;massivehard 组长&#xff1a;晓辉 队员&#xff1a;一飞&#xff0c;帅珍&#xff0c;斌豪&#xff0c;锦谋 团队分工 模块序号模块名模块具体内容1日记编辑添加随笔2照片选择选择照片识别3消息模块收发消息4个人信息账号&#xff0c;密码等负责人分…

安装asp.net mvc4后mvc3项目编译报错

为什么80%的码农都做不了架构师&#xff1f;>>> 安装asp.net mvc4之后&#xff0c;之前的mvc3项目编译时报这个错“The type System.Web.Mvc.ModelClientValidationRule exists in both c:\Program Files\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.M…

SqlServer SqlBulkCopy批量插入 -- 多张表同时插入(事务)

这段时间在解决一个多个表需要同时插入大量数据的问题&#xff0c;于是在网上找了下&#xff0c;查到说用SqlBulkCopy效率很高&#xff0c;实验后确实很快&#xff0c;10万条数据只要4秒钟&#xff0c;用ef要用40秒。但是我的还需两张表同时插入&#xff0c;且需要用到事务&…

一介书生,仅此而已

喜欢写文章&#xff0c;所以很少发随笔。 嘛~其实是一开始就搞错随笔和文章的场景了&#xff0c;迁移太麻烦&#xff0c;有时间自己做个个人博客好了~~转载于:https://www.cnblogs.com/restartyang/p/7710907.html

POJ 3608 Bridge Across Islands 《挑战程序设计竞赛》

为什么80%的码农都做不了架构师&#xff1f;>>> POJ 3608 Bridge Across Islands跨岛大桥&#xff1a;在两个凸包小岛之间造桥&#xff0c;求最小距离&#xff1f;3.6与平面和空间打交道的计算几何 凸包 这题原始数据已经是凸包&#xff08;convex polygons&#x…

抓包(Charles工具入门)

一、charles工具简单使用 1、录制操作 录制请求、清空录制请求&#xff1a; 两种展示请求的视图方式&#xff1a; 2、录制请求的简单分析 &#xff08;1&#xff09;请求的总览页面Overview&#xff1a;可查看请求路径、请求方式、请求时间等有关该请求的内容 &#xff08;2&am…

探秘创造力

为什么80%的码农都做不了架构师&#xff1f;>>> 创造力&#xff0c;在很多行业和领域都被视为神奇的存在&#xff0c;大家都希望自己的创造力能够无限&#xff0c;感觉创造力已经被神话了。其实&#xff0c;一个简单问题可能很少人能够明确&#xff1a;”创造力是天…

2017.10.23解题报告

预计分数&#xff1a;100600160 实际分数&#xff1a;100800180 T1 题目描述 现在有一个字符串&#xff0c;每个字母出现的次数均为偶数。接下来我们把第一次出现的字母a和第二次出现的a连一条线&#xff0c;第三次出现的和四次出现的字母a连一条线&#xff0c;第五次出现的和六…

Chrome Android 60.X+ 不能自动播放audio音频的解决办法

Chrome Android等一些浏览器默认限制了自动播放音频视频等&#xff0c;需要用户有点击的动作后才可以播放。这样的原因在于很多用户流量需要付费&#xff0c;而限制了自动播放可以避免用户在不知情的情况下产生高额的流量费用。 在60.X版本之前&#xff0c;chrome://flags中有一…

(水一下)Linux启动步骤(面试题)

1.加载并初始化Linux内核2.配置硬件设备3.内核创建自发进程4.由用户决定是否进入手工引导模式5.init进程执行系统启动脚本6.进入多用户模式转载于:https://blog.51cto.com/12942223/2408649

【WebGL】《WebGL编程指南》读书笔记——第5章

一、前言 终于到了第五章了&#xff0c;貌似开始越来越复杂了。 二、正文 Example1&#xff1a;使用一个缓冲区去赋值多个顶点数据&#xff08;包含坐标及点大小&#xff09; function initVertexBuffers(gl) {var verticesSizes new Float32Array([0.0, 0.5, 10.0, -0.5, …

ngnix反向代理

https://blog.csdn.net/sherry_chan/article/details/79055211转载于:https://www.cnblogs.com/lwj820876312/p/9115308.html

框架设计:实现数据的按需更新与插入的改进--用数据对比进一步说明

2019独角兽企业重金招聘Python工程师标准>>> 在发布完&#xff1a;框架设计&#xff1a;实现数据的按需更新与插入的改进 之后&#xff1a; 有网友表示不理解&#xff0c;于是这里给出一篇简单的说明对比&#xff0c;表示下改进后好处。 一&#xff1a;场景一&#…

Java异常详解及如何处理

来源&#xff1a;Java异常详解及如何处理 简介 程序运行时&#xff0c;发生的不被期望的事件&#xff0c;它阻止了程序按照程序员的预期正常执行&#xff0c;这就是异常。异常发生时&#xff0c;是任程序自生自灭&#xff0c;立刻退出终止&#xff0c;还是输出错误给用户&…

端口以及服务常用cmd

netstat -ano 列出所有端口的情况 netstat -aon|findstr "49157" 查出特定端口的情况 tasklist|findstr "2720" 查看是哪个进程或者程序占用了PID端口的程序 打开任务管理器&#xff0c;切换到进程选项卡&#xff…

python学习笔记(二十八)日志模块

我们在写程序的时候经常会打一些日志来帮助我们查找问题&#xff0c;这次学习一下logging模块&#xff0c;在python里面如何操作日志。介绍一下logging模块&#xff0c;logging模块就是python里面用来操作日志的模块&#xff0c;logging模块中主要有4个类&#xff0c;分别负责不…

TransactionScope 的基本原理简介

C# 的事务编程 1 Db事务 DbConnection 中创建基于当前连接的 DbTransaction 2 使用TransactionScope ,创建环境事务 一旦创建&#xff0c;在这个环境包含的DbConnection 实例 都会根据连接字符串中的 Sqlserver 连接字符串支持&#xff0c;是否自动附加当前环境事务. 连接字符…

Canvas 生成交互动画

2019独角兽企业重金招聘Python工程师标准>>> 今天介绍的是一个HTML5交互动画效果&#xff0c;难以置信。HTML5虽说还有很多东西在改进&#xff0c;但现在所能实现的 效果的程度我想是诸位很难想象得到的&#xff0c;实在是发展得太快了。 查看详情 转载于:https://m…