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

    /// <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);
        }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值