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.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
/// <summary>
///
/// </summary>
public partial class qsa_ysap : Logic.Commlib.BPage
{
//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<double> rowSum = new List<double>(); //存放横向合计行数据
//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";
unit_code = base.CurrentUser.USER_UNIT_CODE;
}
if (Request.QueryString["strkey"] != null)
{
fpro_id = Request.QueryString["strkey"].ToString();
}
else
{
fpro_id = "0001000000-2007-CGYS";
}
InitTitle();
InitGridView();
}
/// <summary>
/// 初始化Title
/// </summary>
private void InitTitle()
{
DataTable dt = new DataTable();
Logic.BLL.V_YSKZ_QSA_YSSYQK bll = new Logic.BLL.V_YSKZ_QSA_YSSYQK();
dt = bll.Get_all_list("a.pro_id='" + fpro_id + "' and a.unit_code='" + unit_code + "'").Tables[0];
if (dt.Rows.Count > 0)
{
Title.Text = dt.Rows[0]["F_ORG_NAME"].ToString().Trim() + dt.Rows[0]["NOTE"].ToString().Trim();
Label1.Text = "预算总数:" + Logic.Commlib.Commonfunc.Num_to_char_Ten_thousand_toC(dt.Rows[0]["YSSUM"].ToString())
+ " 分配总数:" + Logic.Commlib.Commonfunc.Num_to_char_Ten_thousand_toC(dt.Rows[0]["FPSUM"].ToString())
+ " 已用总数:" + Logic.Commlib.Commonfunc.Num_to_char_Ten_thousand_toC(dt.Rows[0]["YYSUM"].ToString());
}
}
/// <summary>
/// 判断是否存在下级部门
/// </summary>
private bool HasChildDept(string unit_code)
{
DataTable dt = new DataTable();
Logic.BLL.T_YSKZ_BAS_ORG bll = new Logic.BLL.T_YSKZ_BAS_ORG();
dt = bll.GetList("f_org_fid='" + unit_code + "'").Tables[0];
if (dt.Rows.Count > 0)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 判断是否存在下级科目
/// </summary>
private bool HasChildSubject(string kmbh)
{
DataTable dt = new DataTable();
Logic.BLL.T_YSKZ_BAS_KMSZ bll = new Logic.BLL.T_YSKZ_BAS_KMSZ();
dt = bll.GetList("f_kmbh='" + kmbh + "'").Tables[0];
if (dt.Rows.Count > 0)
{
return true;
}
else
{
return false;
}
}
/// <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++)
{
rowSum.Add(0);
col.Add(dwt.Rows[j]["f_org_id"].ToString());
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(dwt.Rows[j]["f_org_name"].ToString() + "已用");
}
dt.Columns.Add("合计预算");
dt.Columns.Add("合计已用");
//添加行数据
DataRow dr;
Logic.BLL.V_YSKZ_QSA_YSSYQK syqk = new Logic.BLL.V_YSKZ_QSA_YSSYQK();
for (int i = 0; i < kmt.Rows.Count; i++)
{
row.Add(kmt.Rows[i]["KMBH"].ToString());
//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 += syqk.GetCharge(fpro_id, dwt.Rows[j]["f_org_id"].ToString(), kmt.Rows[i]["KMBH"].ToString());
//.Substring(0, 2)
rowSum[j] += syqk.GetCharge(fpro_id, dwt.Rows[j]["f_org_id"].ToString(), kmt.Rows[i]["KMBH"].ToString());
dr[dwt.Rows[j]["f_org_name"].ToString() + "预算"] =
syqk.GetCharge(fpro_id, dwt.Rows[j]["f_org_id"].ToString(), kmt.Rows[i]["KMBH"].ToString()).ToString();
dr[dwt.Rows[j]["f_org_name"].ToString() + "已用"] =
syqk.GetCharge(fpro_id, dwt.Rows[j]["f_org_id"].ToString(), kmt.Rows[i]["KMBH"].ToString()).ToString();
}
dr["合计预算"] = Vsum.ToString();
dr["合计已用"] = Vsum.ToString();
dt.Rows.Add(dr);
//添加横向合计
if (i == kmt.Rows.Count - 1)
{
double Hsum = 0;//横向合计
dr = dt.NewRow();
dr["科目"] = "合计:";
for (int j = 0; j < dwt.Rows.Count; j++)
{
//.Substring(0, 2)
dr[dwt.Rows[j]["f_org_name"].ToString() + "预算"] = rowSum[j].ToString();
dr[dwt.Rows[j]["f_org_name"].ToString() + "已用"] = rowSum[j].ToString();
//syqk.GetChargeSumGroupByDept(fpro_id,dwt.Rows[j]["f_org_id"].ToString(),false).ToString();
Hsum += rowSum[j];
}
dr["合计预算"] = Hsum.ToString();
dr["合计已用"] = Hsum.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();
GridView1.Columns.Clear();
GridView1.DataSource = dt;
GridView1.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)
{
HyperLink lb = new HyperLink();
lb.ID = id;
lb.BorderWidth = 0;
lb.Text = "<nobr>" + e.Row.Cells[cellIndex].Text + "</nobr>";
//不同列加不同的客户端脚本
if (rowIndex >= 0)
{
string script;
if (cellIndex == 0)
{
if (HasChildSubject(row[rowIndex]))
{
script = "~/qsa/ysap.aspx?unit_code=" + unit_code + "&strkey=" + fpro_id + "&kmbh=" + row[rowIndex] + "&step=1";
lb.NavigateUrl = script;
}
}
else
{
lb.ToolTip = "上年预算数XXX元" + "/r/n"
+ "同比增长(下降)XX%" + "/r/n"
+ "目前已发生费用XXX元" + "/r/n"
+ "占预算额XX%";
if (HasChildSubject(row[rowIndex]))
{
script = "~/qsa/ysap.aspx?unit_code=" + col[cellIndex - 1] + "&strkey=" + fpro_id + "&kmbh=" + row[rowIndex] + "&step=1";
lb.NavigateUrl = script;
}
}
}
e.Row.Cells[cellIndex].Controls.Add(lb);
}
//横向合计不加链接
else
{
Label lb = new Label();
lb.ID = id;
lb.BorderWidth = 0;
lb.Text = "<nobr>" + e.Row.Cells[cellIndex].Text + "</nobr>";
e.Row.Cells[cellIndex].Controls.Add(lb);
}
}
#region 列头控制
/*
else
{
if (cellIndex >= 1 && cellIndex < col.Count + 1 && cellIndex < e.Row.Cells.Count)
{
//判断是否有下级部门 控制不同跳转链接
if (HasChildDept(col[cellIndex - 1]))
{
HyperLink lb = new HyperLink();
lb.ID = id;
lb.BorderWidth = 0;
lb.Text = "<nobr>" + e.Row.Cells[cellIndex].Text + "</nobr>";
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) + "')";
script = "~/qsa/ysap.aspx" + "?unit_code=" + col[cellIndex - 1] + "&strkey=" + fpro_id + "&kmbh=" + kmbh + "&step=1";
lb.NavigateUrl = script;
e.Row.Cells[cellIndex].Controls.Add(lb);
}
//部门跳转到不同页面
else
{
HyperLink lb = new HyperLink();
lb.ID = id;
lb.BorderWidth = 0;
lb.Text = "<nobr>" + e.Row.Cells[cellIndex].Text + "</nobr>";
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) + "')";
script = "~/qsa/kmysap.aspx" + "?unit_code=" + col[cellIndex - 1] + "&strkey=" + fpro_id;
lb.NavigateUrl = script;
e.Row.Cells[cellIndex].Controls.Add(lb);
}
}
else
{
//控制行头链接及不换行
if (e.Row.RowIndex >= 0 && e.Row.RowIndex < row.Count)
{
HyperLink lb = new HyperLink();
lb.ID = id;
lb.BorderWidth = 0;
lb.Text = "<nobr>" + e.Row.Cells[cellIndex].Text + "</nobr>";
if (HasChildSubject(row[e.Row.RowIndex]))
{
string script;
script = "~/qsa/ysap.aspx?unit_code=" + unit_code + "&strkey=" + fpro_id + "&kmbh=" + row[e.Row.RowIndex] + "&step=1";
lb.NavigateUrl = script;
}
e.Row.Cells[cellIndex].Controls.Add(lb);
}
}
//e.Row.Cells[cellIndex].Style["width"] = (e.Row.Cells[cellIndex].Text.Length*20).ToString()+"px";
}
*/
#endregion
}
public override void VerifyRenderingInServerForm(Control control)
{
// Confirms that an HtmlForm control is rendered for
}
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);
}
}
protected void Button6_Click(object sender, EventArgs e)
{
Logic.Commlib.Commonfunc.ToExcel(GridView1, "abc");
}
protected void GridView2_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
string HeaderBackColor = "#EDEDED";
TableCellCollection tcl = e.Row.Cells;
//清除自动生成的表头
tcl.Clear();
Logic.BLL.T_YSKZ_BAS_ORG org = new Logic.BLL.T_YSKZ_BAS_ORG();
DataTable dwt = org.GetList("f_org_fid='" + unit_code + "'").Tables[0];
#region 生成表头方法一
tcl.Add(new TableHeaderCell());
System.Text.StringBuilder newCells = new System.Text.StringBuilder();
newCells.Append("科目</th>");
for (int j = 0; j < dwt.Rows.Count; j++)
{
string href;
if (HasChildDept(dwt.Rows[j]["f_org_id"].ToString()))
{
href="ysap.aspx" + "?unit_code=" + dwt.Rows[j]["f_org_id"].ToString() + "&strkey=" + fpro_id + "&kmbh=" + kmbh + "&step=1";
}
else
{
href = "kmysap.aspx" + "?unit_code=" + dwt.Rows[j]["f_org_id"].ToString() + "&strkey=" + fpro_id;
}
newCells.Append("<th colspan='2'><a href=" + href + " <nobr>" + dwt.Rows[j]["f_org_name"].ToString() + "</nobr></th>");
}
newCells.Append("<th colspan='2'>合计</th>");
newCells.Append("</tr>" + "<tr bgcolor='" + HeaderBackColor + "'>");
for (int j = 0; j < dwt.Rows.Count; j++)
{
newCells.Append("<th>" + "预算" + "</th>");
newCells.Append("<th>" + "已用" + "</th>");
}
newCells.Append("<th>" + "预算" + "</th>");
newCells.Append("<th>" + "已用");
tcl[0].RowSpan = 2;
tcl[0].Text = newCells.ToString();
#endregion
#region 生成表头方法2
//添加新的表头
/*
int cellNum = -1;
tcl.Add(new TableHeaderCell());
tcl[++cellNum].RowSpan = 2;
tcl[cellNum].Text = "科目";
for (int j = 0; j < dwt.Rows.Count; j++)
{
tcl.Add(new TableHeaderCell());
HyperLink hk = new HyperLink();
hk.ID = "hkCol" + j.ToString();
hk.BorderWidth = 0;
hk.Text = "<nobr>" + dwt.Rows[j]["f_org_name"].ToString() + "</nobr>";
if (HasChildDept(dwt.Rows[j]["f_org_id"].ToString()))
{
hk.NavigateUrl = "~/qsa/ysap.aspx" + "?unit_code=" + dwt.Rows[j]["f_org_id"].ToString() + "&strkey=" + fpro_id + "&kmbh=" + kmbh + "&step=1";
}
else
{
hk.NavigateUrl = "~/qsa/kmysap.aspx" + "?unit_code=" + dwt.Rows[j]["f_org_id"].ToString() + "&strkey=" + fpro_id;
}
tcl[++cellNum].ColumnSpan = 2;
tcl[cellNum].Controls.Add(hk);
}
tcl.Add(new TableHeaderCell());
tcl[++cellNum].ColumnSpan = 2;
tcl[cellNum].Text = "合计";
System.Text.StringBuilder newCells = new System.Text.StringBuilder();
tcl.Add(new TableHeaderCell());
newCells.Append("</tr><tr bgcolor='" + HeaderBackColor + "'>");
for (int j = 0; j < dwt.Rows.Count; j++)
{
newCells.Append("<th>" + "预算" + "</th>");
newCells.Append("<th>" + "已用" + "</th>");
}
newCells.Append("<th>" + "预算" + "</th>");
newCells.Append("<th>" + "已用");
tcl[++cellNum].Text = newCells.ToString();
*/
#endregion
}
}
}