421 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			421 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C#
		
	
	
	
| using BLL;
 | ||
| using System;
 | ||
| using System.Collections.Generic;
 | ||
| using System.Data;
 | ||
| using System.Data.SqlClient;
 | ||
| using System.Linq;
 | ||
| using System.Text;
 | ||
| using AspNet = System.Web.UI.WebControls;
 | ||
| 
 | ||
| namespace FineUIPro.Web.HSSE.Hazard
 | ||
| {
 | ||
|     public partial class ProjectSuperviseCheckRectify : PageBase
 | ||
|     {
 | ||
|         #region 定义项
 | ||
|         /// <summary>
 | ||
|         /// 项目id
 | ||
|         /// </summary>
 | ||
|         public string ProjectId
 | ||
|         {
 | ||
|             get
 | ||
|             {
 | ||
|                 return (string)ViewState["ProjectId"];
 | ||
|             }
 | ||
|             set
 | ||
|             {
 | ||
|                 ViewState["ProjectId"] = value;
 | ||
|             }
 | ||
|         }
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region 加载页面
 | ||
|         /// <summary>
 | ||
|         /// 加载页面
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         protected void Page_Load(object sender, EventArgs e)
 | ||
|         {
 | ||
|             if (!IsPostBack)
 | ||
|             {
 | ||
|                 Funs.DropDownPageSize(this.ddlPageSize);
 | ||
|                 this.ProjectId = this.CurrUser.LoginProjectId;
 | ||
|                 if (!string.IsNullOrEmpty(Request.Params["projectId"]) && Request.Params["projectId"] != this.ProjectId)
 | ||
|                 {
 | ||
|                     this.ProjectId = Request.Params["projectId"];
 | ||
|                 }
 | ||
|                 ////权限按钮方法
 | ||
|                 this.GetButtonPower();
 | ||
|                
 | ||
|                 ddlPageSize.SelectedValue = Grid1.PageSize.ToString();
 | ||
|                 // 绑定表格
 | ||
|                 BindGrid();
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 绑定数据
 | ||
|         /// </summary>
 | ||
|         private void BindGrid()
 | ||
|         {
 | ||
|             string strSql = string.Empty;
 | ||
|           
 | ||
|             strSql = @"SELECT SuperviseCheckRectifyId,SuperviseCheckRectifyCode,ProjectId,ProjectName,UnitId,UnitName,CheckDate,IsFromMainUnit,HandleState,HandleStateName,IssueMan,IssueDate,TotalCount,CompleteCount,UnCompleteCount"
 | ||
|                 + @" FROM View_Supervise_SuperviseCheckRectify"
 | ||
|                 + @" WHERE HandleState != 1";
 | ||
|             List<SqlParameter> listStr = new List<SqlParameter>();
 | ||
|             strSql += " AND ProjectId = '" + this.ProjectId + "'";
 | ||
|             if (!string.IsNullOrEmpty(this.CurrUser.UnitId) && !BLL.CommonService.IsMainUnitOrAdmin(this.CurrUser.UserId))
 | ||
|             {
 | ||
|                 strSql += " AND UnitId = '" + this.CurrUser.UnitId + "'";
 | ||
|             }
 | ||
|             if (!string.IsNullOrEmpty(this.txtName.Text.Trim()))
 | ||
|             {
 | ||
|                 strSql += " AND (SuperviseCheckRectifyCode like @name OR ProjectName like @name OR UnitName like @name OR HandleState like @name)";
 | ||
|                 listStr.Add(new SqlParameter("@name", "%" + this.txtName.Text.Trim() + "%"));
 | ||
|             }
 | ||
|             SqlParameter[] parameter = listStr.ToArray();
 | ||
|             DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
 | ||
| 
 | ||
|             Grid1.RecordCount = tb.Rows.Count;
 | ||
|             tb = GetFilteredTable(Grid1.FilteredData, tb);
 | ||
|             var table = this.GetPagedDataTable(Grid1, tb);
 | ||
| 
 | ||
|             Grid1.DataSource = table;
 | ||
|             Grid1.DataBind();
 | ||
|             for (int i = 0; i < Grid1.Rows.Count; i++)
 | ||
|             {
 | ||
|                 Model.Supervise_SuperviseCheckRectify rectify = BLL.SuperviseCheckRectifyService.GetSuperviseCheckRectifyById(Grid1.Rows[i].DataKeys[0].ToString());
 | ||
|                 if (rectify != null)
 | ||
|                 {
 | ||
|                     if (rectify.HandleState == "1")
 | ||
|                     {
 | ||
|                         Grid1.Rows[i].RowCssClass = "yellow";
 | ||
|                     }
 | ||
|                     else if (rectify.HandleState == "2")
 | ||
|                     {
 | ||
|                         Grid1.Rows[i].RowCssClass = "red";
 | ||
|                     }
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region 表头过滤、分页、排序、关闭窗口
 | ||
|         /// <summary>
 | ||
|         /// 过滤表头
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         protected void Grid1_FilterChange(object sender, EventArgs e)
 | ||
|         {
 | ||
|             BindGrid();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 分页
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
 | ||
|         {
 | ||
|             Grid1.PageIndex = e.NewPageIndex;
 | ||
|             BindGrid();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 排序
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         protected void Grid1_Sort(object sender, GridSortEventArgs e)
 | ||
|         {
 | ||
|             Grid1.SortDirection = e.SortDirection;
 | ||
|             Grid1.SortField = e.SortField;
 | ||
|             BindGrid();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 分页显示条数下拉框
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
 | ||
|         {
 | ||
|             Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
 | ||
|             BindGrid();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 关闭弹出窗
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         protected void Window1_Close(object sender, WindowCloseEventArgs e)
 | ||
|         {
 | ||
|             BindGrid();
 | ||
|         }
 | ||
|         #endregion        
 | ||
| 
 | ||
|         #region 数据编辑事件
 | ||
|         /// <summary>
 | ||
|         /// Grid行双击事件
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
 | ||
|         {
 | ||
|             this.EditData();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 右键编辑事件
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         protected void btnMenuEdit_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             this.EditData();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 编辑数据方法
 | ||
|         /// </summary>
 | ||
|         private void EditData()
 | ||
|         {
 | ||
|             
 | ||
|                 if (Grid1.SelectedRowIndexArray.Length == 0)
 | ||
|                 {
 | ||
|                     Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
 | ||
|                     return;
 | ||
|                 }
 | ||
|                 string SuperviseCheckRectifyId = Grid1.SelectedRowID;
 | ||
|                 PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ProjectSuperviseCheckRectifyEdit.aspx?SuperviseCheckRectifyId={0}", SuperviseCheckRectifyId, "编辑 - ")));
 | ||
|            
 | ||
|         }
 | ||
|         #endregion        
 | ||
|      
 | ||
|         #region 获取按钮权限
 | ||
|         /// <summary>
 | ||
|         /// 获取按钮权限
 | ||
|         /// </summary>
 | ||
|         /// <param name="button"></param>
 | ||
|         /// <returns></returns>
 | ||
|         private void GetButtonPower()
 | ||
|         {
 | ||
|             var buttonList = BLL.CommonService.GetAllButtonList( this.ProjectId, this.CurrUser.UserId, BLL.Const.ProjectSuperviseCheckRectifyMenuId);
 | ||
|             if (buttonList.Count() > 0)
 | ||
|             {               
 | ||
|                 if (buttonList.Contains(BLL.Const.BtnModify))
 | ||
|                 {                   
 | ||
|                     this.btnMenuEdit.Hidden = false;
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region 导出按钮
 | ||
|         /// 导出按钮
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         protected void btnOut_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             Response.ClearContent();
 | ||
|             string filename = Funs.GetNewFileName();
 | ||
|             Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("企业监督检查整改" + filename, System.Text.Encoding.UTF8) + ".xls");
 | ||
|             Response.ContentType = "application/excel";
 | ||
|             Response.ContentEncoding = System.Text.Encoding.UTF8;
 | ||
|             Response.Write(GetGridTableHtmls(Grid1));
 | ||
|             Response.End();
 | ||
| 
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 导出方法
 | ||
|         /// </summary>
 | ||
|         /// <param name="grid"></param>
 | ||
|         /// <returns></returns>
 | ||
|         private string GetGridTableHtmls(Grid grid)
 | ||
|         {
 | ||
|             StringBuilder sb = new StringBuilder();
 | ||
|             MultiHeaderTable mht = new MultiHeaderTable();
 | ||
|             mht.ResolveMultiHeaderTable(Grid1.Columns);
 | ||
|             sb.Append("<meta http-equiv=\"content-type\" content=\"application/excel; charset=UTF-8\"/>");
 | ||
|             sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
 | ||
|             foreach (List<object[]> rows in mht.MultiTable)
 | ||
|             {
 | ||
|                 sb.Append("<tr>");
 | ||
|                 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("<th{0}{1}{2}>{3}</th>",
 | ||
|                        rowspan != 1 ? " rowspan=\"" + rowspan + "\"" : "",
 | ||
|                        colspan != 1 ? " colspan=\"" + colspan + "\"" : "",
 | ||
|                       colspan != 1 ? " style=\"text-align:center;\"" : "",
 | ||
|                         column.HeaderText);
 | ||
|                 }
 | ||
|                 sb.Append("</tr>");
 | ||
|             }
 | ||
|             foreach (GridRow row in grid.Rows)
 | ||
|             {
 | ||
|                 sb.Append("<tr>");
 | ||
|                 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("<td>{0}</td>", html);
 | ||
|                 }
 | ||
|                 sb.Append("</tr>");
 | ||
|             }
 | ||
|             sb.Append("</table>");
 | ||
|             return sb.ToString();
 | ||
|         }
 | ||
| 
 | ||
|         #region 多表头处理
 | ||
|         /// <summary>
 | ||
|         /// 多表头处理
 | ||
|         /// </summary>
 | ||
|         public class MultiHeaderTable
 | ||
|         {
 | ||
|             // 包含 rowspan,colspan 的多表头,方便生成 HTML 的 table 标签
 | ||
|             public List<List<object[]>> MultiTable = new List<List<object[]>>();
 | ||
|             // 最终渲染的列数组
 | ||
|             public List<GridColumn> Columns = new List<GridColumn>();
 | ||
|             public void ResolveMultiHeaderTable(GridColumnCollection columns)
 | ||
|             {
 | ||
|                 List<object[]> row = new List<object[]>();
 | ||
|                 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<object[]> row)
 | ||
|             {
 | ||
|                 foreach (object[] cell in row)
 | ||
|                 {
 | ||
|                     GroupField groupField = cell[2] as GroupField;
 | ||
|                     if (groupField != null && groupField.Columns.Count > 0)
 | ||
|                     {
 | ||
|                         List<object[]> subrow = new List<object[]>();
 | ||
|                         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<object[]> row, int level)
 | ||
|             {
 | ||
|                 List<object[]> nextrow = new List<object[]>();
 | ||
| 
 | ||
|                 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
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 查询
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         protected void txtName_TextChanged(object sender, EventArgs e)
 | ||
|         {
 | ||
|             this.BindGrid();
 | ||
|         }
 | ||
|     }
 | ||
| } |