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

6 篇文章 0 订阅
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);
        }
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值