/
ivan
/
ModMas
Обзор
Документация
Войти
/
ivan
/
ModMas
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ModuleMaster/pc/st_1.aspx.vb
338 строк
13 KB
i.krivokon
Initial commit
13 мар 2026, 13:49
13 мар 2026, 13:49
00d9fb6
Код
Авторство
О чём код?
Imports System.Data Imports System.IO Partial Class capa Inherits System.Web.UI.Page Private collection As New Dictionary(Of Integer, String) Private sqlf As New sharedClasses.dbFunctions.SqlFunctions Private ExcelDownload As Boolean = False Public Shared Sub ApplyGridViewHeader(ParentId As String, ByRef gv As GridView, ByRef a As Collection) 'процедура написана таким образом, что в нее всегда должны передаваться индексы с учетом только фактически отображаемых колонок 'т.е. при вычислении индекса объединяемой колонки (передаваемой в качестве параметра в процедуру) считается, 'что колонок со свойством Visible = false в таблице как бы нет. 'индексы (передаваемые в качестве параметров в процедуру) указываются по исходному порядку необъединенных колонок Dim AllowSorting As Boolean = gv.AllowSorting If gv.Rows.Count > 0 Then Dim row = New GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal) Dim r = gv.HeaderRow Dim cell As TableHeaderCell Dim i, j As Integer Dim invisibleColsCount As Integer = 0 Dim cnt As Integer = 0 'i = 1 For Each rcell As TableCell In r.Cells cell = New TableHeaderCell If AllowSorting Then Dim lb As New HyperLink Try lb.Style("color") = "White" lb.Text = CType(rcell.Controls(0), LinkButton).Text lb.NavigateUrl = "javascript:__doPostBack('" & ParentId & "$" & gv.ID & "','Sort$" & CType(rcell.Controls(0), LinkButton).CommandArgument & "')" cell.Controls.Add(lb) Catch ex As Exception cell.Text = rcell.Text End Try Else cell.Text = rcell.Text End If cell.Style("text-align") = "center" cell.Visible = rcell.Visible 'If cnt > a(i)(1) And cnt < a(i)(1) + a(i)(2) Then ' If Not rcell.Visible Then ' invisibleColsCount += 1 ' End If 'End If cnt += 1 row.Cells.Add(cell) 'End If Next 'для нужных ячеек в верхней строке, прописываем тексты объединяющих ячеек и их ColumnSpan For i = 1 To a.Count row.Cells(a(i)(1)).Text = a(i)(0) row.Cells(a(i)(1)).ColumnSpan = a(i)(2) - invisibleColsCount Next 'идем по верхней строке у оставшихся ячеек (не задействованных) в предыдущем цикле ставим им RowSpan = 2 'одновременно ячееки с таким же индексом в нижней строке помечаем на удаление For i = 0 To row.Cells.Count - 1 If row.Cells(i).Visible Then If row.Cells(i).ColumnSpan < 2 Then row.Cells(i).RowSpan = 2 r.Cells(i).ColumnSpan = 100 Else 'пропускаем ячейки на которые распространяется ColumnSpan i = i + row.Cells(i).ColumnSpan - 1 + invisibleColsCount End If End If Next 'удаляем помеченные ячейки в нижней строке i = 0 While i < r.Cells.Count If r.Cells(i).ColumnSpan = 100 Then r.Cells.RemoveAt(i) Else : i = i + 1 End If End While 'идем по верхней строке удаляем соответствующее ColumnSpan количество ячеек после ячеек имеющих ColumnSpan > 1 i = 0 While i < row.Cells.Count If row.Cells(i).ColumnSpan > 1 Then For j = 1 To row.Cells(i).ColumnSpan - 1 + invisibleColsCount row.Cells.RemoveAt(i + 1) Next End If i = i + 1 End While CType(gv.Controls(0), Table).Rows.AddAt(0, row) End If End Sub Public Sub CollectHeaderColumn(ByRef gv As GridView, colNumber As Integer, Optional referenceColNumber As Integer = -1) Dim curCell As New TableCell With {.Text = "."} Dim rowSpan As Integer = 1 Dim ColNumberToCheckText As Integer If referenceColNumber = -1 Then ColNumberToCheckText = colNumber Else ColNumberToCheckText = referenceColNumber End If Dim curText As String = "." For Each dr As GridViewRow In gv.Rows If dr.Cells(ColNumberToCheckText).Text <> curText Then 'curCell.Text Then If rowSpan > 1 Then curCell.RowSpan = rowSpan End If curCell = dr.Cells(colNumber) curText = dr.Cells(ColNumberToCheckText).Text rowSpan = 1 Else dr.Cells(colNumber).Visible = False rowSpan += 1 End If Next If rowSpan > 1 Then curCell.RowSpan = rowSpan End If End Sub Private Sub capa_Load(sender As Object, e As EventArgs) Handles Me.Load Dim sql, sql1, sql2 As New StringBuilder sql.Clear() sql.AppendLine("SELECT") sql.AppendLine("[LEVEL] ") sql.AppendLine(",[TOP_MODEL] ") sql.AppendLine(",[PARENT_CODE] ") sql.AppendLine(",[COMPONENT] ") sql.AppendLine(",[OBJECT_DESCRIPTION] ") sql.AppendLine(",[QTY__BASE_] ") sql.AppendLine(",[QTY__BASIC_] ") sql.AppendLine(",[UN] ") sql.AppendLine(",[MP_IND] ") sql.AppendLine(",[MTYP] ") sql.AppendLine(",[PROCTYPE] ") sql.AppendLine(",[SPT] ") sql.AppendLine(",[MATL_GROUP] ") sql.AppendLine(",[PATTERN] ") sql.AppendLine(",[TYP] ") sql.AppendLine(",[MRPC] ") sql.AppendLine(",[UNRESTR] ") sql.AppendLine(",[VENDOR] ") sql.AppendLine(",[PGR] ") sql.AppendLine(",[PGR_PURCH] ") sql.AppendLine(",[DGR] ") sql.AppendLine(",[DGR_PURCH] ") sql.AppendLine(",[UNIT] ") sql.AppendLine(",[UNIT_PRICE] ") sql.AppendLine(",[AMOUNT] ") sql.AppendLine(",[NAME1] ") sql.AppendLine(",[GRP] ") sql.AppendLine(",[PR] ") sql.AppendLine(",[VALID_FROM] ") sql.AppendLine(",[VALID_TO] ") sql.AppendLine(",[AMT_USD] ") sql.AppendLine(",[LOCATION] ") sql.AppendLine(",[HS_CODE] ") sql.AppendLine(",[COUNTRY] ") sql.AppendLine("FROM [UserModules].[user].[ST_1] ") sql.AppendLine("where level <> '' and level is not null") 'sql.AppendLine("order by cast(isnull(amt_usd, 0) as decimal(20,2)) desc") queue.SelectCommand = sql.ToString report.DataSource = queue sql1.Clear() sql1.AppendLine("SELECT") sql1.AppendLine("TOP_MODEL") sql1.AppendLine(",location") sql1.AppendLine(",cast(sum(cast(amt_usd as decimal (20,8))) as decimal(20,2)) as Total") sql1.AppendLine("FROM [UserModules].[user].[ST_1]") sql1.AppendLine("where location is not null and location <> ''") sql1.AppendLine("group by TOP_MODEL, LOCATION") queue1.SelectCommand = sql1.ToString Table1.DataSource = queue1 sql2.Clear() sql2.AppendLine("SELECT") sql2.AppendLine("TOP_MODEL") sql2.AppendLine(",HS_CODE") sql2.AppendLine(",cast(sum(cast(amt_usd as decimal (20,8))) as decimal(20,2)) as Total") sql2.AppendLine("FROM [UserModules].[user].[ST_1]") sql2.AppendLine("where HS_CODE is not null and HS_CODE <> '' and HS_CODE='8450900000'") sql2.AppendLine("group by TOP_MODEL, HS_CODE") queue2.SelectCommand = sql2.ToString Table2.DataSource = queue2 prepare_data() End Sub Sub prepare_data() Dim bt_stat As Data.DataRow = sqlf.GetRow("select top 1 * from UserModules.[user].WA_JOB_LIST WHERE id=78 and (RUN_IMMEDIATELY = 'Y' or NOW_RUNNING = 'Y') ") If Not IsNothing(bt_stat) Then If bt_stat("RUN_IMMEDIATELY") = "Y" Or bt_stat("NOW_RUNNING") = "Y" Then 'Stock.Text = "The stock data is being extracted " spinner.Visible = True Process.Enabled = False HiddenField1.Value = "locked" Else HiddenField1.Value = "unlocked" End If Else HiddenField1.Value = "unlocked" End If Try Catch ex As Exception Dim debug As Integer = 16 End Try End Sub Private Sub report_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles report.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.Cells.Item(17).Text <> " " And e.Row.Cells.Item(31).Text = " " Then e.Row.BackColor = Drawing.Color.LightPink End If End If End Sub Private Sub report_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles report.RowCommand End Sub Private Sub SqlDataSource_Selecting(sender As Object, e As SqlDataSourceSelectingEventArgs) Handles queue.Selecting e.Command.CommandTimeout = 3600 End Sub Private Sub report_Init(sender As Object, e As EventArgs) Handles report.Init End Sub Private Sub report_PreRender(sender As Object, e As EventArgs) Handles report.PreRender 'report.Columns(7).Visible = False 'report.Columns(6).Visible = False End Sub Protected Sub Process_Click(sender As Object, e As EventArgs) Handles Process.Click Dim sqlf As New sharedClasses.dbFunctions.SqlFunctions Dim bt_stat As Data.DataRow = sqlf.GetRow("select top 1 * from UserModules.[user].WA_JOB_LIST WHERE id=78 and (RUN_IMMEDIATELY = 'Y' or NOW_RUNNING = 'Y') ") If Not IsNothing(bt_stat) Then If bt_stat("RUN_IMMEDIATELY") = "Y" Or bt_stat("NOW_RUNNING") = "Y" Then 'Stock.Text = "The stock data is being extracted " spinner.Visible = True Process.Enabled = False End If Else Dim plant As Char If Model.Text.Substring(0, 1) = "W" Then plant = "3" Else plant = "1" End If sqlf.NonQuery("Update UserModules.[user].WA_JOB_LIST Set RUN_IMMEDIATELY='Y', PARAMS='PLANT:{P90" + plant + "};MODEL:{" + Model.Text + "}' WHERE id=78 ") prepare_data() End If End Sub Protected Sub ibExcelDownload_Click(sender As Object, e As ImageClickEventArgs) Handles ibExcelDownload.Click ExcelDownload = True End Sub Sub ExcelDownloadSub(ByVal gv As GridView, ByVal filename As String) Response.Clear() 'Response.Buffer = True Response.AddHeader("content-disposition", "attachment;filename=" & filename & ".xls") Response.ContentType = "application/vnd.xls" Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8") EnableViewState = False Response.Charset = "utf-8" Dim myCItrad As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("en-US", True) gv.AllowSorting = False gv.AllowPaging = False gv.DataBind() Dim sw As StringWriter = New StringWriter(myCItrad) Dim hw As HtmlTextWriter = New HtmlTextWriter(sw) gv.RenderControl(hw) Response.Write(sw.ToString) Response.End() End Sub Private Sub capa_PreRender(sender As Object, e As EventArgs) Handles Me.PreRender Try If ExcelDownload Then ExcelDownloadSub(report, "ST_1") Else report.DataBind() Table1.DataBind() Table2.DataBind() End If Catch ex As Exception Dim debug As Integer = 16 End Try End Sub Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control) End Sub End Class