/
ivan
/
ModMas
Обзор
Документация
Войти
/
ivan
/
ModMas
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ModuleMaster/dynamicgrid.aspx.vb
172 строки
7 KB
i.krivokon
Initial commit
13 мар 2026, 13:49
13 мар 2026, 13:49
00d9fb6
Код
Авторство
О чём код?
Imports System.Data Partial Class dynamicGrid Inherits System.Web.UI.Page Private skipColumns() As Integer = {0} Private Const Separator As String = "$" Private FieldList As New Collection Private NewValues As New Collection Dim sqlQuery As String = "SELECT * FROM [UserModules].[dbo].[ModuleMaster]" Dim tableName As String = "[UserModules].[dbo].[ModuleMaster]" Private emptyFlag As Boolean = False Private sqlf As New sharedClasses.dbFunctions.SqlFunctions #Region "GridData" Protected Sub GridView1_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then Dim sTAbleName As String = tableName 's.Substring(startIndex, endIndex - startIndex).Trim Dim rowView As DataRowView = CType(e.Row.DataItem, DataRowView) Dim i As Integer = 0 For Each c As TableCell In e.Row.Cells If Not skipColumns.Contains(i) Then If Not FieldList.Contains(i) Then FieldList.Add(rowView.DataView.Table.Columns(i).ColumnName, i) End If If Not emptyFlag Then Dim uc As UserControls_gridEditControl = LoadControl("~/UserControls/gridEditControl.ascx") uc.Text = c.Text uc.Table = sTAbleName uc.Field = rowView.DataView.Table.Columns(i).ColumnName uc.Type = "TEXT" uc.RecordID = rowView("ID") AddHandler uc.Editing, AddressOf EditingHandler AddHandler uc.Saved, AddressOf SavedHandler AddHandler uc.Cancelled, AddressOf CancelledHandler c.Controls.Add(uc) End If End If i += 1 Next End If End Sub Protected Sub GridView1_DataBound(sender As Object, e As System.EventArgs) Handles GridView1.DataBound Dim ib As New ImageButton With {.ImageUrl = "~/Images/Buttons/add.png"} AddHandler ib.Click, AddressOf AddMode If Not IsNothing(GridView1.FooterRow) Then GridView1.FooterRow.Cells(0).Controls.Add(ib) End If End Sub #End Region #Region "Grid Actions Handlers" Protected Sub SavedHandler(tableName As String, fieldName As String, rowId As String, value As String, fieldType As String, byButton As Boolean, text As String) lblMessage.Text = "Saved!!! " & rowId & " : " & fieldName lblEditingObject.Text = "" End Sub Protected Sub CancelledHandler(rowId As Integer, fieldName As String) lblMessage.Text = "Cancelled! " & rowId & " : " & fieldName lblEditingObject.Text = "" End Sub Protected Sub EditingHandler(rowId As Integer, fieldName As String) If lblEditingObject.Text <> "" Then For Each r As GridViewRow In GridView1.Rows If r.Cells(0).Text = lblEditingObject.Text.Split(separator)(0) Then Dim i As Integer = 0 For Each c As TableCell In r.Cells If Not skipColumns.Contains(i) Then If CType(c.Controls(0), UserControls_gridEditControl).Field = lblEditingObject.Text.Split(separator)(1) Then CType(c.Controls(0), UserControls_gridEditControl).Save() CType(c.Controls(0), UserControls_gridEditControl).Show(True) End If End If i += 1 Next End If Next End If lblEditingObject.Text = rowId & Separator & fieldName End Sub Protected Sub CancelNewRecordHandler() GridDataBind(GridView1, GetData(sqlQuery)) lblGridStatus.Text = "VIEW" End Sub Protected Sub AddMode() For i As Integer = 1 To GridView1.FooterRow.Cells.Count - 1 'Dim p As New UpdatePanel Dim txt As New TextBox txt.ID = "new_" & FieldList(i) 'p.ContentTemplateContainer.Controls.Add(txt) 'GridView1.FooterRow.Cells(i).Controls.Add(p) GridView1.FooterRow.Cells(i).Controls.Add(txt) Next GridView1.FooterRow.Cells(0).Controls.Clear() Dim ib1 As New ImageButton With {.ImageUrl = "~/Images/Buttons/save.png"} ib1.ID = "save_new_record" AddHandler ib1.Click, AddressOf SaveNewRecord GridView1.FooterRow.Cells(0).Controls.Add(ib1) Dim ib2 As New ImageButton With {.ImageUrl = "~/Images/Buttons/cancel.png"} ib2.ID = "cancel_new_record" AddHandler ib2.Click, AddressOf CancelNewRecordHandler GridView1.FooterRow.Cells(0).Controls.Add(ib2) lblGridStatus.Text = "ADD" End Sub Protected Sub SaveNewRecord() Dim i As Integer = 0 Dim first As Boolean = False Dim sql As New StringBuilder sql.Append("INSERT INTO " & tableName & "(") For Each c As TableCell In GridView1.FooterRow.Cells If Not skipColumns.Contains(i) Then If first Then sql.Append(",") End If sql.Append(FieldList(i)) first = True End If i += 1 Next sql.Append(") VALUES (") i = 0 first = False For Each c As TableCell In GridView1.FooterRow.Cells If Not skipColumns.Contains(i) Then If first Then sql.Append(",") End If sql.Append("'" & CType(c.Controls(0), TextBox).Text & "'") first = True End If i += 1 Next sql.Append(")") sqlf.NonQuery(sql.ToString) lblGridStatus.Text = "VIEW" GridDataBind(GridView1, GetData(sqlQuery)) End Sub #End Region #Region "Page Events" Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load GridDataBind(GridView1, GetData(sqlQuery)) If lblGridStatus.Text = "ADD" Then AddMode() End If End Sub #End Region Private Sub GridDataBind(ByRef grid As GridView, data As DataTable) grid.DataSource = data grid.DataBind() End Sub Private Function GetData(sql As String) As DataTable Dim dt As DataTable = sqlf.GetData(sql) If dt.Rows.Count = 0 Then dt.Rows.Add(dt.NewRow) emptyFlag = True End If Return dt End Function End Class