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# List实现行转列的通用方案 本篇通过行转列引出了System.Linq.Dynamic,并且介绍了过滤功能,具有很好的参考价值。下面跟着小编一起来看下吧 立即下载

相关推荐

C# DataTable常见用法汇总

主要介绍了C# DataTable常见用法,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下

gridControl控件显示交叉表

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

weixin_30760895的博客 385

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的博客 956

2.1 SRv6 TE Policy

SRv6 TE Policy是在SRv6技术基础上发展的一种新的隧道引流技术。SRv6 TE Policy路径表示为指定路径的段列表(Segment List),称为SID列表(Segment ID List)。每个SID列表是从源到目的地的端到端路径,并指示网络中的设备遵循指定的路径,而不是遵循IGP计算的最短路径。如果数据包被导入SRv6 TE Policy中,SID列表由头端添加到数据包上,网络的其余设备执行SID列表中嵌入的指令。

m0_70976024的博客 1229

vivado下ECO操作-不重新综合实现修改属性并生成.bit

ECO即engineer change order,即工程变更指令,可以对设计做局部小改动并只对改动部分重新布局布线并生成.bit。在一个工程动辄编译几个小时情况下,可以在调试中节省大量时间。比如我们在调试中,需要改变时钟占空比或者相位,需要改变寄存器初值等等,此时用ECO暂时改动,待验证后在重新编译无疑是最有效率的方法。 实现ECO通常有两种方式,一是通过vivado界面完成,另一种方法就是tcl脚本。所有的ECO操作都可以通过tcl操作完成,有的操作用vivado界面无法完成,只能通过tcl。以下主要

4644

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 2227

Linux系统搭建OpenClaw(原Clawdbot)全流程指南 最新版

工具定位:开源个人 AI 助手,支持文件读取、命令执行、多渠道交互(Telegram / 本地终端等);系统要求:主流 Linux 发行版(Ubuntu/Debian/CentOS 等),Node.js ≥22(核心依赖);安全提示:OpenClaw 为测试版,具备高权限操作能力,建议使用非主力机,配置权限白名单,避免接触敏感数据。

AI时代老码农的第二春 6553

DataTable 将行表转化成交叉表

DataTable 将行表转化成交叉表

TianChong的专栏 1092

Yolov5s/Yolov8s网络结构图

yolov8、yolov5网络结构图

Goodness2020的博客 9916

【GlobalMapper精品教程】006:Excel表格(.xls)或文本(.txt .csv)坐标文件生成矢量点

原始的坐标数据如下图所示,其中坐标为Lat经度,LNG纬度,均为十进制度的形式,一般软件都支持十进制度的格式,如果不支持,你可以尝试使用度分秒的形式,图中的DDMMSS-LAT为纬度,DDMMSS-LNG为经度。打开globalmapper软件,点击【打开数据文件】,选择坐标数据文件(案例中的数据位配套实验数据包中的data006.rar)气象台站分布点坐标.xls。选择坐标系:本案例数据采用的是经纬度,因此选择Geographic(Latitude/Longitude),基准选择WGS84,点击确定。

智慧空间实验室 2562

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

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

weixin_34411563的博客 214

51单片机 DHT11温湿度传感器LCD显示+串口打印+Proteus仿真

DHT11+LCD1602+串口输出+Proteus仿真

perseverance51博客 7193

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

方法一:城市员工人数成都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的专栏 2577

基于Solidworks的三维光路结构示意图绘制实例演示-技术细节

基于Solidworks的三维光路结构示意图绘制实例演示-技术细节

简单光学 1万+

uniapp - H5网页打包运行报错Failed to load resource: net::ERR_FILE_NOT_FOUND(uniApp打包成H5部署到服务器,打包h5白屏并报错页面空白)

Failed to load resource: net::ERR_FILE_NOT_FOUND,uniapp 坑之打包之后白屏,uniapp打包h5,HBuilderX 打包H5后空白报错 Failed to load resource: net::ERR FILE NOT_FOUND,UNI-APP H5应用白屏(空白页)解决方案,白屏并报错Failed to load resource: net::ERR_FILE_NOT_FOUND,uniapp开发,打包成H5部署到服务器,uniapp打包之后首页

🏆 前端领域优质创作者 3573

也谈下vs2005中的gridview (转)

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

angyunyao1518的博客 158

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SQL 2008行列转换的pivot--产生动态列

 突然间发现,已经好久没有写博客了,也好久没用SQLServer进行开发了。由于目前项目开发的原因,对于SQL Server才重视起来。发现SQL Server也引进了不少新的东西,现将一个不错的动态行列转换的例子给大家分享一下,行列转换的函数为:pivot,unpivot 转自:  http://www.2cto.com/database/201209/153233.html

langcai1981的专栏 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值