SGGL_JT/SUBQHSE/FineUIPro.Web/Customization/CNCEC4/HSSE/Supervise/SuperviseCheckReport.aspx.cs

511 lines
19 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.Customization.CNCEC4.HSSE.Supervise
{
public partial class SuperviseCheckReport : PageBase
{
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
// 表头过滤
//FilterDataRowItem = FilterDataRowItemImplement;
if (!IsPostBack)
{
////权限按钮方法
//this.GetButtonPower();
//btnNew.OnClientClick = Window1.GetShowReference("SuperviseCheckReportEdit.aspx") + "return false;";
//btnDelete.OnClientClick = Grid1.GetNoSelectionAlertReference("请至少选择一项!");
//btnDelete.ConfirmText = String.Format("你确定要删除选中的&nbsp;<b><script>{0}</script></b>&nbsp;行数据吗?", Grid1.GetSelectedCountReference());
ddlPageSize.SelectedValue = Grid1.PageSize.ToString();
// 绑定表格
BindGrid();
}
}
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
string strSql = @"SELECT S.SuperviseCheckReportId,S.SuperviseCheckReportCode,
S.CheckDate,
u.UnitName,S.CheckTeam,C.CheckTypeName,
S.State,S.ProjectOrUnit,
case when S.SuperviseType='1' then P.ProjectName
else U.UnitName end as ProjectName,S.SuperviseType,Us.UserName,S.CheckTeams,S.Remark
FROM dbo.Supervise_SuperviseCheckReport_Shj AS S
LEFT JOIN dbo.Base_Project AS P ON P.ProjectId=S.ProjectOrUnit
LEFT JOIN dbo.Base_Unit AS U ON U.UnitId=S.ProjectOrUnit
LEFT JOIN dbo.Base_CheckType AS C ON C.CheckTypeId=S.CheckType
LEFT JOIN SYS_USER AS Us ON S.CheckTeam=Us.UserId
WHERE 1=1
";
List<SqlParameter> listStr = new List<SqlParameter>();
if (!string.IsNullOrEmpty(this.txtName.Text.Trim()))
{
strSql += " AND (S.SuperviseCheckReportCode like @name OR P.ProjectName like @name OR u.UnitName like @name OR Us.UserName like @name)";
listStr.Add(new SqlParameter("@name", "%" + this.txtName.Text.Trim() + "%"));
}
//只能看到当前项目的
strSql += " AND S.CheckTeam = @Projectid And S.SuperviseType='1' ";
listStr.Add(new SqlParameter("@Projectid", this.CurrUser.UserId));
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_SuperviseCheckReport_Shj model = Funs.DB.Supervise_SuperviseCheckReport_Shj.FirstOrDefault(x => x.SuperviseCheckReportId == Grid1.Rows[i].DataKeys[0].ToString());
if (model.State == "2")
{
Grid1.Rows[i].RowCssClass = "green";
}
else
{
Grid1.Rows[i].RowCssClass = "red";
}
}
}
#endregion
#region
protected string ConvertState(object state)
{
if (state != null)
{
if (state.ToString() == "0")
{
return "待提交";
}
else if (state.ToString() == "1")
{
return "待回复";
}
else if (state.ToString() == "2")
{
return "已回复";
}
}
return "";
}
#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();
}
/// <summary>
/// 关闭弹出窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window2_Close(object sender, WindowCloseEventArgs e)
{
BindGrid();
}
protected void Window2_Close1(object sender, WindowCloseEventArgs e)
{
BindGrid();
}
#endregion
#region
protected void lbtnRectify_Click(object sender, EventArgs e)
{
System.Web.UI.WebControls.LinkButton lbtnRectify = sender as System.Web.UI.WebControls.LinkButton;
Model.Supervise_SuperviseCheckReport_Shj report = BLL.SuperviseCheckReportShjService.GetSuperviseCheckReportById(lbtnRectify.CommandArgument);
PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("~/AttachFile/webuploader.aspx?toKeyId={0}&path=FileUpload/SuperviseCheckReportEdit&type=-1&menuId={1}", lbtnRectify.CommandArgument, "146A2AE0-B0D8-4233-AF7D-F074A0BEE2DA")));
}
#endregion
#region
protected void lbtnSubRec_Click(object sender, EventArgs e)
{
System.Web.UI.WebControls.LinkButton lbtnSubRec = sender as System.Web.UI.WebControls.LinkButton;
Model.Supervise_SuperviseCheckReport_Shj report = BLL.SuperviseCheckReportShjService.GetSuperviseCheckReportById(lbtnSubRec.CommandArgument);
PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("~/AttachFile/webuploader.aspx?toKeyId={0}&path=FileUpload/SuperviseCheckReportEdit&type=-1&menuId={1}", lbtnRectify.CommandArgument + "_HF", "146A2AE0-B0D8-4233-AF7D-F074A0BEE2DA")));
}
#endregion
#region
/// <summary>
/// 编辑按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnEdit_Click(object sender, EventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length == 0)
{
Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
return;
}
string SuperviseCheckReportId = Grid1.SelectedRowID;
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("SuperviseCheckReportEdit.aspx?SuperviseCheckReportId={0}", SuperviseCheckReportId, "编辑 - ")));
}
#endregion
#region
/// <summary>
/// 批量删除
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnDelete_Click(object sender, EventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length > 0)
{
int count = 0;
foreach (int rowIndex in Grid1.SelectedRowIndexArray)
{
string rowID = Grid1.DataKeys[rowIndex][0].ToString();
//判断是否回复,已回复的不允许删除
Model.Supervise_SuperviseCheckReport_Shj report = BLL.SuperviseCheckReportShjService.GetSuperviseCheckReportById(rowID);
if (report.State != "2")
{
BLL.SuperviseCheckReportShjService.DeleteSuperviseCheckReportById(rowID);
count += 1;
}
}
BindGrid();
ShowNotify("共删除" + count + "条数据(已回复的数据无法删除)!");
}
}
#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(GetGridTableHtmlThis(Grid1));
Response.End();
}
/// <summary>
/// 导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
private string GetGridTableHtmlThis(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;
}
if (column.ColumnID == "tfRectify")
{
html = (row.FindControl("lbtnRectify") as AspNet.LinkButton).Text;
}
if (column.ColumnID == "tfSubRec")
{
html = (row.FindControl("lbtnSubRec") as AspNet.LinkButton).Text;
}
if (column.ColumnID == "State")
{
html = (row.FindControl("labState") 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
{
// 包含 rowspancolspan 的多表头,方便生成 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
#region
/// <summary>
/// 查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void txtName_TextChanged(object sender, EventArgs e)
{
this.BindGrid();
}
#endregion
#region Grid行点击事件
/// <summary>
/// Grid行事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_RowCommand(object sender, GridCommandEventArgs e)
{
string rowID = Grid1.DataKeys[e.RowIndex][0].ToString();
if (e.CommandName == "Delete")
{
Model.Supervise_SuperviseCheckReport_Shj report = BLL.SuperviseCheckReportShjService.GetSuperviseCheckReportById(rowID);
if (report.State != "2")
{
BLL.SuperviseCheckReportService.DeleteSuperviseCheckReportById(rowID);
BindGrid();
ShowNotify("删除数据成功!");
}
else
{
ShowNotify("当前状态不允许删除!");
}
}
}
#endregion
#region Grid双击事件
/// <summary>
/// Grid行双击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
{
btnEdit_Click(null, null);
}
#endregion
}
}