using BLL; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Text; using AspNet = System.Web.UI.WebControls; using FineUIPro.Web.Controls; namespace FineUIPro.Web.HJGL.WeldingReport { public partial class ArriveDetail : PageBase { private string ISO_ID { get { return (string)ViewState["ISO_ID"]; } set { ViewState["ISO_ID"] = value; } } #region 加载 /// /// 加载页面 /// /// /// protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.ISO_ID = Request.Params["ISO_ID"]; Funs.DropDownPageSize(this.ddlPageSize); this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString(); //BindGrid(); } } #endregion #region 绑定BindGrid /// /// /// private DataTable tb = null; /// /// 绑定数据 /// private void BindGrid() { string sql = @"select PMSID id,* from ( SELECT Pipeline ,IdentCode ,ShortDescription ,Quantity ,Quantity -PPQuantity NeedQuantity ,Unit ,Material ,NominalDiameter ,Remark ,Col_1 ,Col_2 ,Col_3 ,PPQuantity ,ProjectId ,WorkAreaId ,ISO_IsoNo ,ISO_ID ,PMMID ,PMSID ,MaterialID ,Sort ,(select WorkAreaCode from ProjectData_WorkArea where WorkAreaId=CL_PMaterialS.WorkAreaId) as WorkAreaCode ,(select sum(ppquantity)/sum(quantity) from CL_PMaterialS b where b.ProjectId=CL_PMaterialS.ProjectId and b.ISO_ID=CL_PMaterialS.ISO_ID) as dhl FROM CL_PMaterialS ) a where dhl<1 and Quantity>PPQuantity and a.ProjectId='" + this.CurrUser.LoginProjectId + "' "; if (!string.IsNullOrEmpty(this.ISO_ID)) { sql += " and a.ISO_ID='" + this.ISO_ID + "' "; } sql += " order by a.ISO_ID"; //List listStr = new List //{ // new SqlParameter("@projectId", this.CurrUser.LoginProjectId) //}; //SqlParameter[] parameter = listStr.ToArray(); tb = SQLHelper.GetDataTableRunText(sql, null); if (tb != null) { DataTable dt = tb.Copy(); string isoid = ""; double ppquantity = 0; double quantity = 0; DataRow newrow = null; int jotnum = 0; for (int i = tb.Rows.Count - 1; i >=0; i--) { if (isoid != dt.Rows[i]["ISO_ID"].ToString()) { if (newrow != null) { newrow["PPQuantity"] = ppquantity.ToString("0.0000"); newrow["Quantity"] = quantity.ToString("0.0000"); newrow["NeedQuantity"] = (quantity - ppquantity).ToString("0.0000"); newrow["id"] = Guid.NewGuid().ToString(); dt.Rows.InsertAt(newrow, i + jotnum+1); } newrow = dt.NewRow(); isoid = dt.Rows[i]["ISO_ID"].ToString(); if (!string.IsNullOrEmpty(tb.Rows[i]["PPQuantity"].ToString())) { ppquantity = double.Parse(tb.Rows[i]["PPQuantity"].ToString()); } if (!string.IsNullOrEmpty(tb.Rows[i]["Quantity"].ToString())) { quantity = double.Parse(tb.Rows[i]["Quantity"].ToString()); } jotnum = 1; } else { jotnum++; if (!string.IsNullOrEmpty(tb.Rows[i]["PPQuantity"].ToString())) { ppquantity += double.Parse(tb.Rows[i]["PPQuantity"].ToString()); } if (!string.IsNullOrEmpty(tb.Rows[i]["Quantity"].ToString())) { quantity += double.Parse(tb.Rows[i]["Quantity"].ToString()); } } } if (newrow != null) { newrow["PPQuantity"] = ppquantity.ToString("0.0000"); newrow["Quantity"] = quantity.ToString("0.0000"); newrow["NeedQuantity"] = (quantity - ppquantity).ToString("0.0000"); newrow["id"] = Guid.NewGuid().ToString(); dt.Rows.InsertAt(newrow, jotnum ); } FilteredTable filteredTable = new FilteredTable(); filteredTable.FilterDataRowItem = FilterDataRowItemImplement; tb = filteredTable.GetFilteredTable(Grid1.FilteredData, dt); this.Grid1.RecordCount = tb.Rows.Count; var table = this.GetPagedDataTable(Grid1, tb); Grid1.DataSource = table; Grid1.DataBind(); } } private bool FilterDataRowItemImplement(object sourceObj, string fillteredOperator, JToken fillteredObj, string column) { bool valid = false; // if (column == "Name") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.Value(); if (fillteredOperator == "equal") { if (sourceValue == fillteredValue) { valid = true; } } else if (fillteredOperator == "contain") { if (sourceValue.Contains(fillteredValue)) { valid = true; } } else if (fillteredOperator == "start") { if (sourceValue.StartsWith(fillteredValue)) { valid = true; } } else if (fillteredOperator == "end") { if (sourceValue.EndsWith(fillteredValue)) { valid = true; } } } return valid; } /// /// 改变索引事件 /// /// /// protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) { BindGrid(); } /// /// 分页下拉选择事件 /// /// /// protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) { Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); BindGrid(); } protected void Grid1_FilterChange(object sender, EventArgs e) { BindGrid(); } /// /// 排序 /// /// /// protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e) { this.BindGrid(); } #endregion #region Grid行绑定事件 /// /// Grid行绑定事件 /// /// /// protected void Grid1_RowDataBound(object sender, GridRowEventArgs e) { if (e.Values[2] == null || string.IsNullOrEmpty(e.Values[2].ToString())) { e.RowCssClass = "color1"; } } #endregion #region 统计按钮事件 /// /// 统计 /// /// /// protected void BtnAnalyse_Click(object sender, EventArgs e) { BindGrid(); } #endregion #region 导出按钮 /// 导出按钮 /// /// /// 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(GetGridTableHtml(Grid1)); Response.End(); } /// /// 导出方法 /// /// /// private string GetGridTableHtml(Grid grid) { StringBuilder sb = new StringBuilder(); grid.PageSize = this.Grid1.RecordCount; BindGrid(); sb.Append(""); sb.Append(""); sb.Append(""); foreach (GridColumn column in grid.Columns) { sb.AppendFormat("", column.HeaderText); } sb.Append(""); foreach (GridRow row in grid.Rows) { sb.Append(""); foreach (GridColumn column in grid.Columns) { string html = row.Values[column.ColumnIndex].ToString(); if (column.ColumnID == "tfNumber") { html = (row.FindControl("labNumber") as AspNet.Label).Text; } sb.AppendFormat("", html); } sb.Append(""); } var sumary = grid.SummaryData; if (sumary != null) { foreach (GridColumn column in grid.Columns) { try { if (sumary.ContainsKey(column.ColumnID)) { sb.AppendFormat("", sumary.GetValue(column.ColumnID).ToString()); } else { sb.AppendFormat("", ""); } } catch (Exception e) { sb.AppendFormat("", ""); } } } sb.Append("
{0}
{0}
{0}{0}{0}
"); return sb.ToString(); } #endregion } }