`

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

分享到:
评论

相关推荐

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

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

    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.NET.4揭秘

    asp.net 4揭秘.第1卷》 第一部分 构建asp.net页面 第1章 asp.net framework概览2 1.1 asp.net和.net framework5 1.1.1 框架类库5 1.1.2 公共语言运行库10 1.2 asp.net控件11 1.2.1 asp.net控件概览11 1.2.2 html控件...

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

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

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

    代码如下: /// &lt;summary&gt; /// 合并两个相同的DataTable,返回合并后的结果 /// &lt;/summary&gt; /// ”dt1″&gt;&lt;/param&gt; /// ”dt2″&gt;&lt;/param&gt; /// &lt;returns&gt;&lt;/returns&gt; public DataTable CombineTheSameDatatable...

    零基础学ASP.NET 2.0电子书&源代码绝对完整版1

    示例描述:本章演示ASP.NET 2.0网站的预编译以及学习ASP.NET 2.0的前置知识。 WebSite文件夹 创建的ASP.NET 2.0 Web站点。 www文件夹 第一个用C#开发的Web应用程序。 bianyi.bat 编译网站的批处理文件。 ...

    IntelliGrid表格控件(Web Grid)V1.0 For Asp.Net2.0 3.5

    本控件是基于Asp.Net平台的Web表格控件,用于Web网站的开发。 ★支持多种浏览器(IE6以上、FireFox2.0以上、谷歌浏览器等)。 ★使用本控件开发的网站,网页上表格行的插入、追加、删除、修改、上下移动、拷贝、粘贴...

    《零基础学ASP.NET 2.0》第13章 ADO.NET 2.0对象

    13.5.8 合并DataSet 237 13.5.9 复制DataSet 240 13.6 配置应用程序 243 13.7 常见问题 244 13.7.1 介绍Connection对象时为什么在程序中出现的是SqlConnection 244 13.7.2 使用Command对象来执行SQL命令应注意什么 ...

    零基础学ASP.NET 2.0&源代码绝对完整版1

    示例描述:本章演示ASP.NET 2.0网站的预编译以及学习ASP.NET 2.0的前置知识。 WebSite文件夹 创建的ASP.NET 2.0 Web站点。 www文件夹 第一个用C#开发的Web应用程序。 bianyi.bat 编译网站的批处理文件。 form...

    Asp.net 高级编程学习经验

    37.合并两个结构一样的DataTable 38.在DataTable中排序 39.将数据写入excel中,从excel读取数据 40.页眉模板列隐藏GridView控件的行 41.泛型与类结合使用来绑定数据,并添加到数据控件中 42.数据读取到treeview中,...

    DataTable 导出Excel

    使用ASP.NET开发,在C#中同样可用 DataTable导出Excel 合并单元格 教你如何自定义Excel样式 如何在客户端下载并保存 带数据源

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    4.6.6 在asp.net中引用名称空间 241 4.7 创建自己的名称空间 241 4.8 my关键字 244 4.8.1 my.application名称空间 244 4.8.2 my.computer名称空间 248 4.8.3 my.forms名称空间 251 4.8.4 my.resources...

    精通c#数据库开发(pdg)

    作者:王华杰,李律松,孙一波 等编著 出版社:清华大学出版社 出版...电子相册的设计与实现 第5章 网上选课系统 第6章 ASP.NET实现论坛 第7章 ASP.NET实现网上商城 第8章 电子图书在线出版系统 &lt;br&gt;

    第7章 数据绑定控件

    实例193 绑定DataTable对象显示银行月利息 及本息 307 7.2 GridView控件基本应用 308 实例194 GridView数据绑定并实现自带 分页功能 308 实例195 实现选中、编辑和删除GridView中的 商品信息 310 实例196 供求信息...

    C#开发经验技巧宝典

    0976 将图片以二进制格式存储到数据库中(asp.net) 569 0977 从DataReader对象读取数据的技巧 569 0978 随机显示数据库记录 569 0979 通过DataTable获得数据表的主键 569 0980 将Access数据库转化为SQL ...

    MIS金智打印通

    本程序为通用打印程序,单据、会计凭证、发票清单、报表、任意复杂表格、合并表格如工矿企业合同都可以由系统提供的几个默 认打印对象组合打印。 DataGrid、DataTable、MSHFlexGrid等二维形式全部可以打印。 ...

    C#编程经验技巧宝典

    111 &lt;br&gt;0184 如何在ASP.NET中获取文件的扩展名 111 &lt;br&gt;0185 如何在ASP.NET中用URL在页面之间传值 112 &lt;br&gt;0186 如何使用IsPostBack实现ASP.NET页面加载 112 &lt;br&gt;0187 如何利用输出缓存技术缓存...

    简单好用的广源报表控件GscrReport V4.1

    用户只需提供一个DataTable对象,因此报表支持目前流行的各种数据库格式,比如SQL Server、Oracle、Access等常用数据库格式。  另外,用户也通过赋值报表的SelectSQL属性(设置针对SQL作为 Gscr.Report 数据源运行...

Global site tag (gtag.js) - Google Analytics