VS2005 GridView动态绑定数据源(交叉表) 动态绑定列 动态生成模板列

C# ListView导入Excel2007,2010以上版本(亲自测试通过) 解决excel导出问题。针对office 2007 以上版本同样有效 microsoft excel 12.0 object library 环境下有问题,_microsoft excel 14.0 object library 测试通过 _microsoft excel 11.0 object library 同样支持 2003,2007耐心调试不会有问题,自己已经验证调试通过 立即下载
1VS2005 GridView动态绑定数据源(交叉表) 动态绑定列 动态生成模板

VS2005 GridView动态绑定数据源(交叉表) 动态绑定列 动态生成模板列


using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
/**//// <summary>
/// 
/// </summary>
public partial class qsa_ysap : System.Web.UI.Page
{
    private int step; //接受传入参数 因本页自己链接自己,以此控制页面内容
    private string kmbh; //接受传入参数 科目编号
    private string unit_code; //接收传入参数 当前单位
    private string fpro_id; //接收传入参数 预算编号
    private List<String> col = new List<String>(); //用于存放各列的标记,此列存放单位编号
    private List<String> row = new List<String>(); //用于存放各行的标记,此列存放科目编号
    private List<String> colname = new List<String>();
    private List<String> rowname = new List<String>();

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString["kmbh"] != null)
        {
            kmbh = Request.QueryString["kmbh"].ToString();
        }
        else
        {
            kmbh = "0";
        }
        if (Request.QueryString["step"] != null)
        {
            step = int.Parse(Request.QueryString["step"].ToString());
        }
        else
        {
            step = 0;
        }
        if (Request.QueryString["unit_code"] != null)
        {
            unit_code = Request.QueryString["unit_code"].ToString();
        }
        else
        {
            unit_code = "0001000000";
        }
        if (Request.QueryString["fpro_id"] != null)
        {
            fpro_id = Request.QueryString["fpro_id"].ToString();
        }
        else
        {
            fpro_id = "36a14788-df2c-41f1-947f-e7e2e53d92f9";
        }
        InitGridView();
    }

    /**//// <summary>
    /// 初始化GridView
    /// </summary>
    private void InitGridView()
    {

        Logic.BLL.T_YSKZ_BAS_ORG org = new Logic.BLL.T_YSKZ_BAS_ORG();
        Logic.BLL.T_YSKZ_BAS_KMSZ kmsz = new Logic.BLL.T_YSKZ_BAS_KMSZ();
        //单位表
        DataTable dwt = org.GetList("f_org_fid='" + unit_code + "'").Tables[0];
        //科目表
        DataTable kmt = kmsz.GetList("f_kmbh='" + kmbh + "'").Tables[0];

        //添加列头
        DataTable dt = new DataTable();
        dt.Clear();
        dt.Columns.Clear();
        dt.Columns.Add("科目");
        for (int j = 0; j < dwt.Rows.Count; j++)
        {
            col.Add(dwt.Rows[j]["f_org_id"].ToString());
            colname.Add(dwt.Rows[j]["f_org_name"].ToString());//.Substring(0, 2)
            dt.Columns.Add(dwt.Rows[j]["f_org_name"].ToString());//.Substring(0, 2)
        }
        dt.Columns.Add("合计");

        //添加行数据
        DataRow dr;
        for (int i = 0; i < kmt.Rows.Count; i++)
        {
            row.Add(kmt.Rows[i]["KMBH"].ToString());
2VS2005 GridView动态绑定数据源(交叉表) 动态绑定列 动态生成模板
            rowname.Add(kmt.Rows[i]["KNAME"].ToString());
            dr = dt.NewRow();
            dr["科目"] = kmt.Rows[i]["KNAME"].ToString();

            double Vsum = 0; //纵向合计
            for (int j = 0; j < dwt.Rows.Count; j++)
            {
                Vsum += GetCharge(dwt.Rows[j]["f_org_id"].ToString(), kmt.Rows[i]["KMBH"].ToString());
                //.Substring(0, 2)
                dr[dwt.Rows[j]["f_org_name"].ToString()] =
                    GetCharge(dwt.Rows[j]["f_org_id"].ToString(), kmt.Rows[i]["KMBH"].ToString()).ToString();
            }
            dr["合计"] = Vsum.ToString();
            dt.Rows.Add(dr);

            //添加横向合计
            if (i == kmt.Rows.Count - 1)
            {
                dr = dt.NewRow();
                dr["科目"] = "合计:";
                for (int j = 0; j < dwt.Rows.Count; j++)
                {
                    //.Substring(0, 2)
                    dr[dwt.Rows[j]["f_org_name"].ToString()] =
                        GetChargeSumGroupByDept(dwt.Rows[j]["f_org_id"].ToString()).ToString();
                }
                dr["合计"] = GetChargeSumGroupByDept(unit_code).ToString();
                dt.Rows.Add(dr);
            }
        }

        //动态绑定列
        //GridView2.AutoGenerateColumns = false;
        //GridView2.ShowHeader = true;
        //GridView2.Columns.Clear();

        //HyperLinkField hf = new HyperLinkField();
        //hf.HeaderText = "科目";
        //hf.DataTextField = "科目";
        //GridView2.Columns.Add(hf);

        //for (int i = 0; i < colname.Count; i++)
        //{
        //    hf = new HyperLinkField();
        //    hf.HeaderText = colname[i];
        //    hf.DataTextField = colname[i];
        //    hf.DataNavigateUrlFormatString = "a.aspx?unit_code="+col[i]+"&kmbh="+row[i];
        //    GridView2.Columns.Add(hf);
        //}

        //BoundField bf = new BoundField();
        //bf.HeaderText = "合计";
        //bf.DataField = "合计";
        GridView2.Columns.Clear();
        GridView2.DataSource = dt;
        GridView2.DataBind();
    }

    /**//// <summary>
    /// 根据控件id,要生成控件的列动态生成模板列
    /// </summary>
    /// <param name="id">模板列内控件的id</param>
    /// <param name="cellIndex">列的序号索引值</param>
    /// <param name="e">GridViewRowEventArgs</param>
    protected void ItemTemplateGenerate(string id, int cellIndex, GridViewRowEventArgs e)
    {

        if (e.Row.RowType != DataControlRowType.Header)
        {
            int rowIndex = e.Row.RowIndex;
            //横向合计和弹出页面不加链接
            if (rowIndex < row.Count && step == 0)
            {
                LinkButton lb = new LinkButton();
                lb.ID = id;
                lb.BorderWidth = 0;
                lb.Text = e.Row.Cells[cellIndex].Text;

                //不同列加不同的客户端脚本
                if (rowIndex >= 0)
                {
                    string script;
                    if (cellIndex == 0)
                    {
3VS2005 GridView动态绑定数据源(交叉表) 动态绑定列 动态生成模板
                        script = "window.showModalDialog('ysap.aspx?unit_code=" + unit_code + "&fpro_id=" + fpro_id + "&kmbh=" + row[rowIndex] + "&step=1','_blank','" + string.Format("dialogWidth={0}px,dialogHeight={1}px,help:no;unadorned:yes;resizable:yes;status:no;location:location;", 1000, 768) + "')";
                    }
                    else
                    {
                        lb.ToolTip = "aaaaaaa bnbbbbbb";
                        script = "window.showModalDialog('ysap.aspx?unit_code=" + col[cellIndex - 1] + "&fpro_id=" + fpro_id + "&kmbh=" + row[rowIndex] + "&step=1','_blank','" + string.Format("dialogWidth={0}px,dialogHeight={1}px,help:no;unadorned:yes;resizable:yes;status:no;location:location;", 1000, 768) + "')";
                    }
                    lb.OnClientClick = script;
                }
                e.Row.Cells[cellIndex].Controls.Add(lb);
            }
        }
        else
        {
            if (step == 0 && cellIndex >= 1 && cellIndex < col.Count + 1)
            {
                LinkButton lb = new LinkButton();
                //lb.ID = id;
                lb.BorderWidth = 0;
                lb.Text = e.Row.Cells[cellIndex].Text;

                //不同列加不同的客户端脚本
                string script;
                script = "window.showModalDialog('ysap.aspx?unit_code=" + col[cellIndex - 1] + "&fpro_id=" + fpro_id + "&kmbh=" + "0" + "&step=1','_blank','" + string.Format("dialogWidth={0}px,dialogHeight={1}px,help:no;unadorned:yes;resizable:yes;status:no;location:location;", 1000, 768) + "')";
                lb.OnClientClick = script;
                e.Row.Cells[cellIndex].Controls.Add(lb);
            }
        }


    }

    /**//// <summary>
    /// 通过下级单位编号和科目编号获取费用
    /// </summary>
    /// <param name="child_unit_code"></param>
    /// <param name="kmbh"></param>
    /// <returns></returns>
    private double GetCharge(string child_unit_code, string kmbh)
    {
        return 0;
    }

    /**//// <summary>
    /// 获取单位的所有科目费用之和
    /// </summary>
    /// <param name="child_unit_code"></param>
    /// <param name="kmbh"></param>
    /// <returns></returns>
    private double GetChargeSumGroupByDept(string child_unit_code)
    {
        return 0;
    }

    protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        //动态生成科目列
        ItemTemplateGenerate("LB0", 0, e);
        //动态生成单位列
        for (int i = 0; i < col.Count; i++)
        {
            ItemTemplateGenerate("LB" + (i + 1).ToString(), i + 1, e);
        }
    }
}
C# DataTable常见用法汇总 主要介绍了C# DataTable常见用法,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下 立即下载

相关推荐

C# List实现行转列的通用方案

本篇通过行转列引出了System.Linq.Dynamic,并且介绍了过滤功能,具有很好的参考价值。下面跟着小编一起来看下吧

gridControl控件显示交叉表

本来我用动态语句写出来的交叉报表,动态的列都可以在我gridcontrol自动显示出来,今天却显示不出来,后来找了一下原因,gridview1的属性OptionsBehavior.Editable=false了 但是没有这句的话,报表就可以被修改数据。那怎么做呢! 解决方法:在邦定完之后,进行设置。 IReport report = ReportService.GetReport();...

weixin_30760895的博客 386

CSS实现多行多列的布局的实例代码

1.两列多行:   HTML: box1:实现两列多行布局 111 222 333 CSS: .box1 { width: 500px; background: #EEEEEE; } .box1 ul { clear: both; overflow: hidden; } .box1 ul li { width: 48%; height: 100px; margin-

DevExpress中GridControl的使用笔记

case "1":e.DisplayText = "男";break;case "0":e.DisplayText = "女";break;}}8.png效果:9.png代码:19.pngelse效果:20.png。

qq_18932003的博客 957

全新RGB-D及平面法线数据集DIODE

丰田工业大学联合芝加哥大学和北航发布全新RGB-D及平面法线数据集 DIODE (Dense Indoor and Outdoor DEpth)。

qq_43477338的博客 1540

【一文读懂】卫星轨道的轨道参数(六根数)和位置速度矢量转换及其在终端距离、相对速度和多普勒频移计算中的应用

本文首先介绍了卫星轨道的六根数参数:半长轴 a、偏心率 e、轨道倾角 i、升交点赤经 Ω、近地点幅角 ω 以及真近点角 ν,并探讨了如何利用这些参数计算卫星与地面终端之间的距离、相对速度及由此产生的多普勒频移。利用开普勒运动公式计算当前瞬间的轨道半径;根据真近点角 ν 在围心坐标系中计算位置矢量和速度矢量;利用旋转矩阵(依次旋转 ω、i、Ω)将围心坐标系的状态矢量转换到地心惯性坐标系;最终结合地面终端信息,计算卫星与终端的欧氏距离、沿视线的相对速度及多普勒频移。

u011376987的博客 9500

VS2005 GridView动态绑定数据源(交叉表) 动态绑定列 动态生成模板列 自定义表头

using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.We

Don't think about what u can do,but do what u wanna do 2228

【ZYNQ驱动双AD9361实战】(一)从官方参考设计到自定义移植

本文详细介绍了如何将ADI官方的单AD9361参考设计移植到ZYNQ平台以驱动双AD9361射频板卡。内容涵盖从环境搭建、官方工程架构解析,到硬件HDL工程修改(包括顶层设计、引脚分配及TCL脚本适配)以及Linux设备树软件配置的全流程实战指南,帮助开发者实现自定义双通道射频收发系统。

weixin_29170327的博客 362

DataTable 将行表转化成交叉表

DataTable 将行表转化成交叉表

TianChong的专栏 1093

【一键搞定】ThinkPHP6.0.2+PHPStudy+Composer极速安装指南——附完整下载包与避坑技巧

本文提供了一份ThinkPHP6.0.2的完整下载包,并详细介绍了如何配合PHPStudy和Composer进行极速安装与配置。指南涵盖了环境准备、Composer国内镜像加速、项目部署及常见避坑技巧,旨在帮助开发者,尤其是内网或网络不佳的用户,快速搭建可运行的TP6开发环境,绕过依赖下载的繁琐步骤。

assembly8low的博客 1008

6、 实时家禽健康识别与疾病检测系统的深入解析

本文深入解析了一种基于物联网的实时家禽健康识别与疾病检测系统,结合图像分析和音频分析技术,能够有效识别病鸡并防止疾病传播。文章详细介绍了系统的测试环境、数据采集与预处理方法、图像与音频分析流程,并对系统性能进行了全面评估。最后提出了未来改进方向,包括多模态融合、深度学习应用及实时性优化等。

weixin_28840811的博客 186

交叉表的简单实现1:使用存储过程

有位朋友要求帮忙实现交叉表(将某些行变为列),之前虽然实现过,但没有整理,今天顺便整理一下,便于自己以后参考,希望对其他网友有帮助,欢迎指出不足之处^_^数据库中原始数据类似:要求前台显示为:建立表结构: CREATE TABLE [dbo].[t_Score] (    [ScoreId] [int] IDENTITY (1, 1) NOT NULL ,    [SubjectName] [v...

weixin_34411563的博客 215

HFSS实战项目——高带外抑制特性SIW带通滤波器

本文对单级滤波器和双级滤波器的设计、工作原理及仿真结果进行了详细分析,并验证了双级SIW带通滤波器在性能方面的优越性,为微波通信系统中滤波器的设计和应用提供了重要参考。

2401_87464239的博客 1816

记录集横向显示输出即交叉表的两种方法

方法一:城市员工人数成都10深圳8北京9上海3大连6横向城市成都深圳北京上海大连员工人数108936      DataTable dtNew = new DataTable();        dtNew.Columns.Add("ColumnName", typeof(string));        for (int i = 0; i        {            dtNew.Columns.Add("Column" + (i + 1).ToString(), typeof(string))

chenjiong的专栏 2578

【数据集】全球陆地表面反照率Albedo

【数据集】全球陆地表面反照率Albedo

WW、forever的博客 1454

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

也谈下vs2005中的gridview (转)

说道gridview,我总是想起vs2003的DataGrid,可能是用的多点的缘故吧.在datagrid里我做的分页都是自己加页面分页button or label ,然后利用datagrid的自动分页功能.在自己分页button事件里写代码.绑定的多是dataset数据源,每次分页button click事件里都要重新绑定一次.觉得很麻烦,毕竟dataset每次准备数据都要连接数据库...

angyunyao1518的博客 159

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: SQL操作全集
Jonly
博客等级 码龄26年 26粉丝 8原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值