`

ASP.NET DataTable合并

阅读更多

public partial class ReportIndex1 : System.Web.UI.Page
    {
        protected string strNf = "2012";
        private DataTable dt = new DataTable();
       // private DataTable dt_SC_SUM;
        private DataTable dt_SC;
        private DataTable dt_SC_XF;
        private DataTable dt_SC_ZX;
       // private DataTable dt_JY_SUM;
        private DataTable dt_JY;
        private DataTable dt_JY_XF;
        private DataTable dt_JY_ZX;
        private DataTable dtDq = new DataTable();
        private int _S1 = 0;
        private int _S2 = 0;
        private int _S3 = 0;
        private int _J1 = 0;
        private int _J2 = 0;
        private int _J3 = 0;
        BLL.DIC_DQXX b_dqxx = new BLL.DIC_DQXX();
        private bool Exist=false;
        private int dqlenght = 0;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
            }
            BindDate();
        }


        protected void btnCx_Click(object sender, EventArgs e)
        {
            
        }
        /// <summary>
        /// 绑定数据
        /// </summary>
        private void BindDate()
        {
            if (txtNf.Text == "")
            {
                txtNf.Text = strNf = DateTime.Now.Year.ToString();
            }
            else
            {
                strNf = txtNf.Text;
            }
            //获取地区名称
            string sql_dq = "select id from view_dqxx_scxkz_scxkz group by id";
            dtDq = DbHelperOra.QueryTable(sql_dq);
            for (int i = 1; i < 7; i++)
            {
                dtDq.Columns.Add(i.ToString(),typeof(string));
            }
            //获取林木持证企业数量
            string sql_Sc = "select id,count(*) from view_dqxx_scxkz_scxkz where SCXKZ_FBRQ<=add_months(to_date('" + strNf + "','yyyy'),12) and SCXKZ_ISTJ=0";
            sql_Sc += " group by id ";
            dt_SC = DbHelperOra.QueryTable(sql_Sc);
            //获取林木新发
            string sql_ScXf = "select id,count(*) from view_dqxx_scxkz_scxkz where SCXKZ_FBRQ >=to_date('" + strNf + "','yyyy')";
            sql_ScXf += " and  SCXKZ_FBRQ<add_months(to_date('" + strNf + "','YYYY'),12) and SCXKZ_ISTJ=0";
            sql_ScXf += " group by id";
            dt_SC_XF = DbHelperOra.QueryTable(sql_ScXf);
            //获取林木注销
            string sql_ScZx = "select id,count(*) from view_dqxx_scxkz_scxkz where SCXKZ_FBRQ >=to_date('" + strNf + "','yyyy')";
            sql_ScZx += " and  SCXKZ_FBRQ<add_months(to_date('" + strNf + "','YYYY'),12) and SCXKZ_ISTJ=1";
            sql_ScZx += " group by id";
            dt_SC_ZX = DbHelperOra.QueryTable(sql_ScZx);
            //获取经营持证企业数量
            string sql_JY = "select id,count(*) from view_dqxx_scxkz_scxkz where JYXKZ_FZRQ<=add_months(to_date('" + strNf + "','yyyy'),12) and JYXKZ_ISTJ=0";
            sql_JY += " group by id";
            dt_JY = DbHelperOra.QueryTable(sql_JY);
            //获取林木经营新发
            string sql_JyXf = "select id,count(*) from view_dqxx_scxkz_scxkz where JYXKZ_FZRQ >=to_date('" + strNf + "','yyyy')";
            sql_JyXf += " and  JYXKZ_FZRQ<add_months(to_date('" + strNf + "','YYYY'),12) and JYXKZ_ISTJ=0";
            sql_JyXf += " group by id";
            dt_JY_XF = DbHelperOra.QueryTable(sql_JyXf);
            //获取林木经营注销
            string sql_JyZx = "select id,count(*) from view_dqxx_scxkz_scxkz where JYXKZ_FZRQ >=to_date('" + strNf + "','yyyy')";
            sql_JyZx += " and  JYXKZ_FZRQ<add_months(to_date('" + strNf + "','YYYY'),12) and JYXKZ_ISTJ=1";
            sql_JyZx += " group by id";
            dt_JY_ZX = DbHelperOra.QueryTable(sql_JyZx);


            JoinDataTableSum(dtDq, dt_SC, dt_SC_XF, dt_SC_ZX, dt_JY, dt_JY_XF, dt_JY_ZX,"id");


            dt.Columns.AddRange(new DataColumn[] { new DataColumn("DQXX_ID"), new DataColumn("S1"), new DataColumn("S2"), new DataColumn("S3"), new DataColumn("J1"), new DataColumn("J2"), new DataColumn("J3") });
            for (int i = 0; i < dtDq.Rows.Count; i++)
            {
                DataRow dr = dt.NewRow();
                if (dtDq.Rows[i][0].ToString() == "1")
                {
                    dr[0] = "贵阳市生态委";
                }
                else if (dtDq.Rows[i][0].ToString() == "-15")//-15是为了能够在int列中存储string值
                {
                    dr[0] = "合计";
                }
                else
                {
                    try
                    {
                        dr[0] = b_dqxx.GetModel(int.Parse(dtDq.Rows[i][0].ToString())).NAME;
                    }
                    catch
                    {
                        throw new Exception("地区名称转换失败");
                    }
                }
                for (int j = 1; j < 7; j++)
                {
                    dr[j] = dtDq.Rows[i][j].ToString();
                }
                dt.Rows.Add(dr);
            }
            rptMain.DataSource = dt;
            rptMain.DataBind();
           
        }
        # region 合并DataTable
        /// <summary>
        /// 把所有DataTable合并
        /// </summary>
        private void JoinDataTableSum(DataTable dtDq,DataTable dtSc,DataTable dtScXf,DataTable dtScZx,DataTable dtJy,DataTable dtJyXf,DataTable dtJyZx,string ColumnName)
        {
            if (!dtDq.Columns.Contains(ColumnName))
            {
                throw new Exception("目标DataTable中无" + ColumnName + "列");
            }
           
            try
            {
                dqlenght = dtDq.Rows.Count;
                JoinDataTable(dtDq, dtSc, dqlenght, 1, ColumnName, ref _S1);
                JoinDataTable(dtDq, dtScXf, dqlenght, 2, ColumnName, ref _S2);
                JoinDataTable(dtDq, dtScZx, dqlenght, 3, ColumnName, ref _S3);
                JoinDataTable(dtDq, dtJy, dqlenght, 4, ColumnName, ref _J1);
                JoinDataTable(dtDq, dtJyXf, dqlenght, 5, ColumnName, ref _J2);
                JoinDataTable(dtDq, dtJyZx, dqlenght, 6, ColumnName, ref _J3);
                DataRow dr = dtDq.NewRow();
                dr[0] = "-15";//这里是为了把它转换为合计
                dr[1] = _S1.ToString();
                dr[2] = _S2.ToString();
                dr[3] = _S3.ToString();
                dr[4] = _J1.ToString();
                dr[5] = _J2.ToString();
                dr[6] = _J3.ToString();
                dtDq.Rows.Add(dr);
            }
            catch (Exception e)
            {
                throw new Exception("执行DataTableJoin失败。/n" + e.Message);
            }
        }
        /// <summary>
        /// 两个DataTable合并
        /// </summary>
        private void JoinDataTable(DataTable dtSrc,DataTable dt_det,int lenght,int ColumnIndex,string ColumnName,ref int Sum)
        {
            Exist = false;
            for (int i = 0; i < lenght;i++ )
            {
                foreach (DataRow joinRow in dt_det.Rows)
                {
                    if (joinRow[ColumnName].ToString() == dtSrc.Rows[i][ColumnName].ToString())
                    {
                        dtSrc.Rows[i][ColumnIndex] = joinRow[1];
                        Exist = true;
                        Sum += int.Parse(dtSrc.Rows[i][ColumnIndex].ToString());
                    }
                }
                if (!Exist)
                {
                    //dtSrc.Rows[i][ColumnIndex] = "0";
                }
            }
        }
        # endregion
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnExpot_Click(object sender, EventArgs e)
        {
            ExportManage.LegerExport1 _lem = new ExportManage.LegerExport1("经营许可证统计表.xlt", System.DateTime.Now.Year.ToString());
            _lem.Export(dt);
        }
        /// <summary>
        /// 通过地区ID转换为名称
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        protected string GetDQName(string id)
        {
            //if (id == "1")
            //{
            //    id = "贵阳市生态委";
            //}
            //else if (id =="-15")//-15是为了能够在int列中存储string值
            //{
            //    id = "合计";
            //}
            //else
            //{
            //    id = b_dqxx.GetModel(int.Parse(id)).NAME;
            //}
            return id;
        }
    }

文章来源:http://www.itnose.net/detail/6024279.html
更多文章:http://www.itnose.net/type/15.html

分享到:
评论

相关推荐

    ASP.NET 2.0中合并 GridView 的表头单元格

    下面我们将详细介绍如何在ASP.NET 2.0中实现GridView表头单元格的合并。 首先,我们需要创建一个数据源。在这个例子中,我们使用了一个DataTable来存储学生姓名和三门课程(语文、数学、英语)的成绩。通过循环,...

    两个DataTable合并, 并保留合并状态

    两个DataTable合并, 并保留合并状态。 如果合并后记录有变更,记录的状态为修改。 如果合并后记录是新增,记录状态为新增。 如果合并后听记录是现有记录,记录状态为删除。

    Asp.net中获取DataTable选择第一行某一列值

    在.NET框架中,我们可以使用DataTable类创建一个表格,并通过DataColumn类添加列,最后使用DataRow类填充数据。 以下是一个简单的代码示例,创建一个包含三列(CustomerID、CustomerName、PID)的DataTable,并添加...

    《ASP.NET4(C#)项目开发教程面向工作过程》

    《ASP.NET4(C#)项目开发教程面向工作过程》是一本专为学习ASP.NET 4.0技术,尤其是使用C#编程语言进行Web应用程序开发所设计的教程。本书旨在通过项目式教学法,让读者在实际操作中掌握ASP.NET的核心概念和技能。 ...

    ASP.NET基础知识ppt

    ASP.NET是微软公司推出的一种用于构建Web应用程序的框架,它基于.NET Framework,为开发者提供了丰富的工具和库,简化了Web应用的开发流程。本讲座主要围绕ASP.NET的基础知识展开,涵盖了DOM、DotNet和ADO.NET等多个...

    asp.net 同学录

    这个“ASP.NET 同学录”项目显然使用了ASP.NET技术来创建一个简单且完整的同学录系统,非常适合初学者进行毕业设计或者熟悉ASP.NET的实践操作。 在ASP.NET中,主要涉及以下关键知识点: 1. **ASP.NET架构**:ASP...

    ASP.NET导出数据到Excel.rar

    ASP.NET是一种基于.NET框架的服务器端编程环境,用于构建动态Web应用程序。在ASP.NET中,导出数据到Excel是常见的需求,特别是在数据报告、数据分析和数据共享时。这个压缩包"ASP.NET导出数据到Excel.rar"很可能包含...

    ASP.NET 控件的使用

    第一部分 构建ASP.NET页面 第1章 ASP.NET Framework概览 2 1.1 ASP.NET和.NET Framework 5 1.1.1 框架类库 5 1.1.2 公共语言运行库 9 1.2 ASP.NET控件 10 1.2.1 ASP.NET控件概览 11 1.2.2 HTML控件 12 1.2.3 理解...

    asp.ent下合并两个结构相同的DataTable

    标题所提及的"asp.ent下合并两个结构相同的DataTable"实际上指的是在ASP.NET环境下,将两个具有相同列结构的`DataTable`对象合并为一个新`DataTable`的过程。提供的代码片段展示了一个名为`CombineTheSameDatatable`...

    asp.net面试题

    ASP.NET是微软公司推出的一种基于.NET Framework的Web应用程序开发平台,它为开发人员提供了丰富的工具集和编程模型,使得构建动态、数据驱动的网站变得更加容易。面试中,ASP.NET相关的问题通常涵盖以下几个核心...

    ASP.NET毕业设计——ASP.NET+SQL网上校友录设计与实现(源代码+论文).zip

    【ASP.NET毕业设计——ASP.NET+SQL网上校友录设计与实现】 ASP.NET 是微软公司推出的一种Web应用程序开发框架,主要用于构建动态网站、Web应用程序和服务。它基于.NET Framework,提供了丰富的功能和工具,使得...

    Asp.net操作Excel的一个类库ExcelHelper

    这个类库没有提供Excel样式设置的方法,建议... 3、Excel组件访问权限的配置问题,见我以前写的随笔关于在ASP.NET中以DCOM方式操作Excel的几个问题 http://www.cnblogs.com/lingyun_k/archive/2005/08/01/205097.html

    ASP.NET面试题

    ASP.NET是微软公司推出的一种基于.NET Framework的服务器端网页开发技术,它允许开发者构建功能丰富的、交互式的Web应用程序。在ASP.NET面试中,面试官通常会考察候选人的C#编程能力、ASP.NET框架理解、Web应用程序...

    ASP.NET+SQL server2005网页版电子通讯录

    ASP.NET和SQL Server 2005是两个关键的技术组件,用于构建网页版电子通讯录。这个项目展示了如何使用这两种技术来实现一个完整的用户交互系统,涵盖了用户管理、社交功能和数据库操作等多个方面。 首先,ASP.NET是...

    asp.net书稿源代码

    ASP.NET是微软公司推出的一种基于.NET Framework的服务器端编程模型,用于构建动态Web应用程序。它是一种高效、易于使用的工具,可以快速开发出功能丰富的Web应用。这个“asp.net书稿源代码”很可能是关于ASP.NET...

    《ASP.NET2.0开发技术大全》光盘02

    《ASP.NET 2.0开发技术大全》是明日科技编著的一本全面介绍ASP.NET 2.0开发的书籍,由人民邮电出版社出版。这本书深入浅出地讲解了使用ASP.NET 2.0框架进行Web应用开发的核心技术和实践方法。尽管只提及了光盘的第二...

    asp.net excel 导出 导入 【CSDN 集合12个例子】.

    在ASP.NET开发中,Excel导入和导出是常见的需求,特别是在数据处理和报表生成时。以下是一些关于这个主题的关键知识点: 1. **文件格式理解**:Excel文件主要有两种格式,`.xls`(Excel 97-2003)和`.xlsx`(Excel ...

    Programming asp.net 中文版(第三版)

    在《Programming ASP.NET 中文版(第三版)》的第10章中,作者详细介绍了ADO.NET对象模型及其核心组成部分——`DataSet`类。这一章节旨在帮助读者理解如何利用ADO.NET进行高效的数据访问和处理。ADO.NET作为.NET ...

    【ASP.NET编程知识】合并两个DataSet的数据内容的方法.docx

    在ASP.NET编程中,数据处理是常见的任务之一,特别是在构建Web应用程序时。本文将深入探讨如何合并两个DataSet的数据内容,这是在处理多个数据源时非常有用的技巧。DataSet是.NET Framework中用于存储和操作关系数据...

    GridView 72般绝技 asp.net

    GridView是ASP.NET Web Forms中非常常见且强大的数据绑定控件,用于显示和操作数据库或其他数据源中的表格数据。它的灵活性和可配置性使得它成为Web应用开发中的首选控件之一。"GridView 72般绝技"这个标题,虽然...

Global site tag (gtag.js) - Google Analytics