/
ivan
/
ModMas
Обзор
Документация
Войти
/
ivan
/
ModMas
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ModuleMaster/production/daily_plan.aspx.vb
251 строка
10 KB
i.krivokon
Initial commit
13 мар 2026, 13:49
13 мар 2026, 13:49
00d9fb6
Код
Авторство
О чём код?
Imports System.IO Partial Class Production_daily_plan Inherits System.Web.UI.Page Private Sub Production_daily_plan_Load(sender As Object, e As EventArgs) Handles Me.Load If Not IsPostBack Then txtStartDate.Text = Date.Today.ToString("yyyy-MM-dd") txtEndDate.Text = Date.Today.ToString("yyyy-MM-dd") End If Dim cf As New CommonFunctions Dim params As New NameValueCollection params.Add("START_WORK_DATE", txtStartDate.Text.Replace("-", "").Replace(" ", "")) params.Add("END_WORK_DATE", txtEndDate.Text.Replace("-", "").Replace(" ", "")) params.Add("LINE", txtLine.Text.Trim) params.Add("MODEL", txtModel.Text.Trim) Dim dt As Data.DataTable = cf.getSqlData(825, params) GridView1.DataSource = dt GridView1.DataBind() End Sub Private Sub Production_daily_plan_PreRenderComplete(sender As Object, e As EventArgs) Handles Me.PreRenderComplete End Sub Private Sub Production_daily_plan_SaveStateComplete(sender As Object, e As EventArgs) Handles Me.SaveStateComplete If GridView1.Rows.Count > 0 Then Dim colnumbers As New Collection colnumbers.Add(4, 4) Dim refColumns As New Collection refColumns.Add(0, 0) refColumns.Add(1, 1) CountSubTotal(GridView1, colnumbers, refColumns) GridView1.Visible = False CommonFunctions.CollectHeaderColumn(gvTheGrid, 0, 1) CommonFunctions.CollectHeaderColumn(gvTheGrid, 1) CommonFunctions.CollectHeaderColumn(gvTheGrid, 5, 6) CommonFunctions.CollectHeaderColumn(gvTheGrid, 6) 'CommonFunctions.CollectHeaderColumn(gvTheGrid, 7, 6) 'CommonFunctions.CollectHeaderColumn(gvTheGrid, 12, 6) 'CommonFunctions.CollectHeaderColumn(gvTheGrid, 13, 6) 'CommonFunctions.CollectHeaderColumn(gvTheGrid, 14) If toExcel Then Response.Clear() Response.Buffer = True Response.AddHeader("content-disposition", "attachment;filename=DailyPlan" & txtStartDate.Text.Replace("-", "") & " - " & txtEndDate.Text.Replace("-", "") & ".xls") Response.ContentType = "application/vnd.xls" Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8") Dim myCItrad As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("en-US", True) Dim sw As StringWriter = New StringWriter(myCItrad) Dim hw As HtmlTextWriter = New HtmlTextWriter(sw) gvTheGrid.RenderControl(hw) Response.Write(sw.ToString) Response.End() End If End If End Sub Private Function CopyRow(r As GridViewRow) As TableRow Dim tr As TableRow If r.RowType = DataControlRowType.Header Then tr = New TableHeaderRow ElseIf r.RowType = DataControlRowType.Footer Then tr = New TableFooterRow Else tr = New TableRow End If For Each c As TableCell In r.Cells Dim nc As TableCell If r.RowType = DataControlRowType.Header Then nc = New TableHeaderCell With {.Text = c.Text, .RowSpan = c.RowSpan, .ColumnSpan = c.ColumnSpan, .ToolTip = c.ToolTip} nc.Style.Add("border-left", c.Style("border-left")) Else nc = New TableCell With {.Text = c.Text, .RowSpan = c.RowSpan, .ColumnSpan = c.ColumnSpan, .ToolTip = c.ToolTip} nc.Style.Add("border-left", c.Style("border-left")) End If tr.Cells.Add(nc) Next Return tr End Function Private Sub PrepareTable(gv As GridView, ByRef tbl As Table, rowsToAdd As Hashtable) Dim cnt As Integer = -1 For Each r As TableRow In CType(gv.Controls(0), Table).Rows 'For Each r As GridViewRow In gv.Rows For i As Integer = rowsToAdd.Count - 1 To 0 Step -1 If rowsToAdd(i).ContainsKey(cnt) Then tbl.Rows.Add(rowsToAdd(i)(cnt)) rowsToAdd(i).Remove(cnt) End If Next tbl.Rows.Add(CopyRow(r)) cnt += 1 Next End Sub Public Sub CountSubTotal(ByRef gv As GridView, colNumbers As Collection, referenceColumns As Collection) Dim rowsToAdd As New Hashtable For Each referenceColNumber As Integer In referenceColumns Dim rowsForThisColumn As New Hashtable Dim inc As Integer = 0 Dim subTotals As New Hashtable For Each idx As Integer In colNumbers subTotals.Add(idx, 0) Next Dim curText As String = "." Dim first As Boolean = True Dim preRow As GridViewRow = Nothing For Each dr As GridViewRow In gv.Rows If dr.RowType = DataControlRowType.DataRow Then If dr.Cells(referenceColNumber).Text <> curText Then If Not first Then Dim newRow As New TableRow Dim i As Integer = 0 For Each cell As TableCell In preRow.Cells() Dim nc As New TableCell If subTotals.ContainsKey(i) Then nc.Text = subTotals(i) ElseIf i = referenceColNumber Then nc.Text = "Sub total by: " & preRow.Cells(i).Text Else If i < referenceColNumber Then nc.Text = cell.Text Else nc.Text = " " 'cell.Text End If End If nc.BackColor = Drawing.Color.LightGray nc.ForeColor = Drawing.Color.Navy nc.Font.Bold = True nc.Style.Add("border-left", cell.Style("border-left")) newRow.Cells.Add(nc) i += 1 Next '----------------------------------------------------- rowsForThisColumn.Add(dr.RowIndex + inc, newRow) '----------------------------------------------------- End If curText = dr.Cells(referenceColNumber).Text For Each idx As Integer In colNumbers If IsNumeric(dr.Cells(idx).Text) Then subTotals(idx) = Convert.ToDecimal(dr.Cells(idx).Text) Else subTotals(idx) = 0 End If Next first = False Else For Each idx As Integer In colNumbers If IsNumeric(dr.Cells(idx).Text) Then subTotals(idx) += dr.Cells(idx).Text End If Next End If preRow = dr End If Next 'Add last row----------------------------------------- Dim newnewRow As New TableRow Dim ii As Integer = 0 For Each cell As TableCell In preRow.Cells() Dim nc As New TableCell If subTotals.ContainsKey(ii) Then nc.Text = subTotals(ii) ElseIf ii = referenceColNumber Then nc.Text = "Sub total by: " & preRow.Cells(ii).Text Else If ii < referenceColNumber Then nc.Text = cell.Text Else nc.Text = " " 'cell.Text End If End If nc.BackColor = Drawing.Color.LightGray nc.ForeColor = Drawing.Color.Navy nc.Font.Bold = True nc.Style.Add("border-left", cell.Style("border-left")) newnewRow.Cells.Add(nc) ii += 1 Next '--------------------- '----------------------------------------------------- rowsForThisColumn.Add(preRow.RowIndex + 1 + inc, newnewRow) '----------------------------------------------------- rowsToAdd.Add(referenceColNumber, rowsForThisColumn) Next PrepareTable(gv, gvTheGrid, rowsToAdd) 'Create GRand total row Dim grandTotalRow As New TableRow Dim grandTotals As New Hashtable For Each idx As Integer In colNumbers grandTotals.Add(idx, 0) Next For Each dr As GridViewRow In gv.Rows If dr.RowType = DataControlRowType.DataRow Then 'Count grand total For Each idx As Integer In colNumbers If IsNumeric(dr.Cells(idx).Text) Then grandTotals(idx) += dr.Cells(idx).Text End If Next '----------------- End If Next For j As Integer = 0 To gv.Rows(0).Cells.Count - 1 Dim nc As New TableCell With {.BackColor = Drawing.Color.Navy, .ForeColor = Drawing.Color.White} nc.Style.Add("font-weight", " bold") If colNumbers.Contains(j) Then nc.Text = grandTotals(j) Else nc.Text = " " End If grandTotalRow.Cells.Add(nc) Next grandTotalRow.Cells(0).Text = "GRAND TOTAL: " gvTheGrid.Rows.RemoveAt(gvTheGrid.Rows.Count - 1) gvTheGrid.Rows.Add(grandTotalRow) End Sub Private toExcel As Boolean = False Protected Sub btnToExcel_Click(sender As Object, e As ImageClickEventArgs) Handles btnToExcel.Click toExcel = True End Sub End Class