using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BLL;
namespace FineUIPro.Web.ZHGL.Information
{
    public partial class AccidentCauseReport : PageBase
    {
        #region 加载页面
        /// 
        /// 加载页面
        ///  
        ///  items = BLL.AccidentCauseReportItemService.GetItems(report.AccidentCauseReportId);
                    Grid1.DataSource = items;
                    Grid1.DataBind();
                }
            }
            else
            {
                SetEmpty();
            }
            this.GetButtonPower();
        }
        #endregion
        #region 关闭窗口
        /// 
        /// 关闭窗口
        ///  
        /// 
        /// 关闭查看审批信息弹出窗口
        ///  
        /// 
        /// 排序
        ///  
        /// 
        /// 新增
        ///  
        /// 
        /// 修改
        ///  
        /// 
        /// 审核
        ///  
        /// 
        /// 审批
        ///  
        /// 
        /// 上报
        ///  
        /// 
        /// 删除
        ///  
        /// 
        /// 把时间转换为文字形式
        ///  
        /// 
        /// 把时间转换为文字形式
        ///  
        /// 
        /// 是否允许删除话题类型
        ///  
        /// 
        /// 单位下拉框联动事件
        ///  
        /// 
        /// 获取按钮权限
        ///  
        /// 
        /// 导入按钮
        ///  
        /// 
        /// 关闭导入弹出窗口
        ///  
        /// 
        /// 打印报表
        ///  
        /// 
        /// 前一个月
        ///  
        /// 
        /// 后一个月
        ///  
        /// 
        /// 月份加减变化
        ///  
        /// 
        /// 查看审批信息
        ///  
        /// 
        /// 导出方法
        ///  
        /// ");
            foreach (List rows in mht.MultiTable)
            {
                sb.Append("");
                foreach (object[] cell in rows)
                {
                    int rowspan = Convert.ToInt32(cell[0]);
                    int colspan = Convert.ToInt32(cell[1]);
                    GridColumn column = cell[2] as GridColumn;
                    sb.AppendFormat("{3} ",
                       rowspan != 1 ? " rowspan=\"" + rowspan + "\"" : "",
                       colspan != 1 ? " colspan=\"" + colspan + "\"" : "",
                      colspan != 1 ? " style=\"text-align:center;\"" : "",
                        column.HeaderText);
                }
                sb.Append(" ");
            }
            foreach (GridRow row in grid.Rows)
            {
                sb.Append("");
                foreach (GridColumn column in mht.Columns)
                {
                    string html = row.Values[column.ColumnIndex].ToString();
                    //if (column.ColumnID == "tfNumber")
                    //{
                    //    html = (row.FindControl("lblNumber") as AspNet.Label).Text;
                    //}
                    sb.AppendFormat("{0} ", html);
                }
                sb.Append(" ");
            }
            sb.Append(" 
");
            return sb.ToString();
        }
        #region 多表头处理
        /// 
        /// 多表头处理
        ///  
        public class MultiHeaderTable
        {
            // 包含 rowspan,colspan 的多表头,方便生成 HTML 的 table 标签
            public List> MultiTable = new List>();
            // 最终渲染的列数组
            public List Columns = new List();
            public void ResolveMultiHeaderTable(GridColumnCollection columns)
            {
                List row = new List();
                foreach (GridColumn column in columns)
                {
                    object[] cell = new object[4];
                    cell[0] = 1;    // rowspan
                    cell[1] = 1;    // colspan
                    cell[2] = column;
                    cell[3] = null;
                    row.Add(cell);
                }
                ResolveMultiTable(row, 0);
                ResolveColumns(row);
            }
            private void ResolveColumns(List row)
            {
                foreach (object[] cell in row)
                {
                    GroupField groupField = cell[2] as GroupField;
                    if (groupField != null && groupField.Columns.Count > 0)
                    {
                        List subrow = new List();
                        foreach (GridColumn column in groupField.Columns)
                        {
                            subrow.Add(new object[]
                           {
                               1,
                                1,
                               column,
                                groupField
                            });
                        }
                        ResolveColumns(subrow);
                    }
                    else
                    {
                        Columns.Add(cell[2] as GridColumn);
                    }
                }
            }
            private void ResolveMultiTable(List row, int level)
            {
                List nextrow = new List();
                foreach (object[] cell in row)
                {
                    GroupField groupField = cell[2] as GroupField;
                    if (groupField != null && groupField.Columns.Count > 0)
                    {
                        // 如果当前列包含子列,则更改当前列的 colspan,以及增加父列(向上递归)的colspan
                        cell[1] = Convert.ToInt32(groupField.Columns.Count);
                        PlusColspan(level - 1, cell[3] as GridColumn, groupField.Columns.Count - 1);
                        foreach (GridColumn column in groupField.Columns)
                        {
                            nextrow.Add(new object[]
                           {
                               1,
                                1,
                                column,
                                groupField
                           });
                        }
                    }
                }
                MultiTable.Add(row);
                // 如果当前下一行,则增加上一行(向上递归)中没有子列的列的 rowspan
                if (nextrow.Count > 0)
                {
                    PlusRowspan(level);
                    ResolveMultiTable(nextrow, level + 1);
                }
            }
            private void PlusRowspan(int level)
            {
                if (level < 0)
                {
                    return;
                }
                foreach (object[] cells in MultiTable[level])
                {
                    GroupField groupField = cells[2] as GroupField;
                    if (groupField != null && groupField.Columns.Count > 0)
                    {
                        // ...
                    }
                    else
                    {
                        cells[0] = Convert.ToInt32(cells[0]) + 1;
                    }
                }
                PlusRowspan(level - 1);
            }
            private void PlusColspan(int level, GridColumn parent, int plusCount)
            {
                if (level < 0)
                {
                    return;
                }
                foreach (object[] cells in MultiTable[level])
                {
                    GridColumn column = cells[2] as GridColumn;
                    if (column == parent)
                    {
                        cells[1] = Convert.ToInt32(cells[1]) + plusCount;
                        PlusColspan(level - 1, cells[3] as GridColumn, plusCount);
                    }
                }
            }
        }
        #endregion
        #endregion
        #region 查看未上报的项目
        /// 
        /// 查看未上报的项目
        ///  
        ///