📄 superdatagrid.vb
字号:
Else
RenderTextBox(writer, colName, colValue, columnSize, 1, columnSize)
End If
Case SqlDbType.Bit
RenderSelect(writer, colName)
Case SqlDbType.Image
writer.Write("[Image]")
Case SqlDbType.DateTime
Dim dtm As DateTime = CType(colValue, DateTime)
If dtm.Date = dtm Then
RenderTextBox(writer, colName, dtm.ToString("d"), 10, 1, 20)
Else
RenderTextBox(writer, colName, dtm.ToString("g"), 20, 1, 30)
End If
Case Else
RenderTextBox(writer, colName, colValue, 5, 1, columnSize)
End Select
End If
End Sub 'RenderEditColumn
'*********************************************************************
'
' RenderTextBox Method
'
' Display a textbox.
'
'*********************************************************************
Private Sub RenderTextBox(writer As HtmlTextWriter, colName As String, colValue As Object, columns As Integer, rows As Integer, maxLength As Integer)
Dim name As String = "txt" & colName
If rows > 1 Then
writer.AddAttribute(HtmlTextWriterAttribute.Id, name)
writer.AddAttribute(HtmlTextWriterAttribute.Name, name)
writer.AddAttribute(HtmlTextWriterAttribute.Cols, columns.ToString())
writer.AddAttribute(HtmlTextWriterAttribute.Rows, rows.ToString())
writer.RenderBeginTag(HtmlTextWriterTag.Textarea)
writer.Write(colValue)
writer.RenderEndTag()
Else
writer.Write(String.Format("<input type=""text"" name=""{0}"" id=""{0}"" value=""{1}"" size=""{2}"" maxlength=""{3}"">", name, colValue, columns, maxLength))
End If
End Sub 'RenderTextBox
'*********************************************************************
'
' RenderSelect Method
'
' Display an HTML select list.
'
'*********************************************************************
Private Sub RenderSelect(writer As HtmlTextWriter, colName As String)
Dim name As String = "txt" & colName
Dim selected As Boolean = False
If colEditValues(name).ToString() = "True" Then
selected = True
End If
writer.AddAttribute(HtmlTextWriterAttribute.Id, name)
writer.AddAttribute(HtmlTextWriterAttribute.Name, name)
writer.RenderBeginTag(HtmlTextWriterTag.Select)
writer.AddAttribute(HtmlTextWriterAttribute.Value, "True")
If selected Then
writer.AddAttribute(HtmlTextWriterAttribute.Selected, "SELECTED")
End If
writer.RenderBeginTag(HtmlTextWriterTag.Option)
writer.Write("True")
writer.RenderEndTag()
writer.AddAttribute(HtmlTextWriterAttribute.Value, "False")
If Not selected Then
writer.AddAttribute(HtmlTextWriterAttribute.Selected, "SELECTED")
End If
writer.RenderBeginTag(HtmlTextWriterTag.Option)
writer.Write("False")
writer.RenderEndTag()
writer.RenderEndTag()
End Sub 'RenderSelect
'*********************************************************************
'
' RenderLink Method
'
' Display a link that causes a postback.
'
'*********************************************************************
Private Sub RenderLink(writer As HtmlTextWriter, label As String, argument As String)
writer.AddAttribute(HtmlTextWriterAttribute.Href, "javascript:" & Page.GetPostBackEventReference(Me, argument))
writer.RenderBeginTag(HtmlTextWriterTag.A)
writer.Write(label)
writer.RenderEndTag()
End Sub 'RenderLink
'*********************************************************************
'
' RenderHeaderRow Method
'
' Display the first row in the HTML table. This row either displays
' just the column names or column names that can be clicked and sorted.
'
'*********************************************************************
Private Sub RenderHeaderRow(writer As HtmlTextWriter)
HeaderStyle.AddAttributesToRender(writer)
writer.RenderBeginTag(HtmlTextWriterTag.Tr)
If _enableEditing Then
writer.RenderBeginTag(HtmlTextWriterTag.Td)
writer.Write(" ")
writer.RenderEndTag()
End If
If _enableSorting Then
RenderSortHeaderRow(writer)
Else
RenderNormalHeaderRow(writer)
End If
writer.RenderEndTag()
End Sub 'RenderHeaderRow
'*********************************************************************
'
' RenderNormalHeaderRow Method
'
' Display all the column names.
'
'*********************************************************************
Private Sub RenderNormalHeaderRow(writer As HtmlTextWriter)
Dim col As DataColumn
For Each col In _dataGridData.Columns
writer.RenderBeginTag(HtmlTextWriterTag.Td)
writer.Write(col.ColumnName)
writer.RenderEndTag()
Next col
End Sub 'RenderNormalHeaderRow
'*********************************************************************
'
' RenderSortHeaderRow Method
'
' Display all the column names as links for sorting columns.
'
'*********************************************************************
Private Sub RenderSortHeaderRow(writer As HtmlTextWriter)
Dim _sortStyle As New Style()
_sortStyle.CopyFrom(HeaderStyle)
Dim col As DataColumn
For Each col In _dataGridData.Columns
writer.RenderBeginTag(HtmlTextWriterTag.Td)
_sortStyle.AddAttributesToRender(writer)
RenderLink(writer, col.ColumnName, "sort_" & col.ColumnName)
writer.RenderEndTag()
Next col
End Sub 'RenderSortHeaderRow
'*********************************************************************
'
' RenderPager Method
'
' Display the pager user interface.
'
'*********************************************************************
Private Sub RenderPager(writer As HtmlTextWriter)
' Calculate total records
Dim totalRecords As Integer = _dataGridData.Rows.Count
' if less rows than PageSize then exit
If _pageSize > totalRecords Then
Return
End If
' Calculate page count
Dim pageCount As Integer = totalRecords / _pageSize
' Now do a mod for any remainder
If totalRecords Mod _pageSize > 0 Then
pageCount += 1
End If
' calculate column count
Dim columnCount As Integer = _dataGridData.Columns.Count
If _enableEditing Then
columnCount += 1
End If
' Render Pager row
_pagerStyle.AddAttributesToRender(writer)
writer.RenderBeginTag(HtmlTextWriterTag.Tr)
writer.AddAttribute(HtmlTextWriterAttribute.Colspan, columnCount.ToString())
writer.RenderBeginTag(HtmlTextWriterTag.Td)
' Render pager table
writer.AddAttribute(HtmlTextWriterAttribute.Width, "100%")
writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "3")
writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0")
writer.RenderBeginTag(HtmlTextWriterTag.Table)
writer.RenderBeginTag(HtmlTextWriterTag.Tr)
writer.RenderBeginTag(HtmlTextWriterTag.Td)
' render previous link
If CurrentPageIndex > 1 Then
RenderLink(writer, _prevText, "page_" & (CurrentPageIndex - 1))
Else
writer.Write(_prevText)
End If
writer.Write(" ")
' Render each page number
Dim pageIndex As Integer
For pageIndex = 1 To pageCount
writer.Write(" ")
If pageIndex = CurrentPageIndex Then
writer.RenderBeginTag(HtmlTextWriterTag.B)
writer.Write(pageIndex.ToString())
writer.RenderEndTag()
Else
RenderLink(writer, pageIndex.ToString(), "page_" & pageIndex.ToString())
End If
writer.Write(" ")
Next pageIndex
' render next link
writer.Write(" ")
If CurrentPageIndex < pageCount Then
RenderLink(writer, _nextText, "page_" & (CurrentPageIndex + 1).ToString())
Else
writer.Write(_nextText)
End If
' Show pager text
writer.AddAttribute(HtmlTextWriterAttribute.Align, "right")
writer.RenderBeginTag(HtmlTextWriterTag.Td)
writer.Write(String.Format(_pagerText, CurrentPageIndex, pageCount))
writer.RenderEndTag()
writer.RenderEndTag() ' end cell
writer.RenderEndTag() ' end row
writer.RenderEndTag() ' end table
writer.RenderEndTag() ' end pager row
writer.RenderEndTag() ' end pager table
End Sub 'RenderPager
'*********************************************************************
'
' RenderError Method
'
' Display an error message in a JavaScript alert box.
'
'*********************************************************************
Private Sub RenderError(writer As HtmlTextWriter)
writer.AddAttribute("language", "javascript")
writer.RenderBeginTag(HtmlTextWriterTag.Script)
writer.Write(String.Format(" alert(""{0}""); ", _errorMessage))
writer.RenderEndTag()
End Sub 'RenderError
'*********************************************************************
'
' OnPreRender Method
'
' Enable smart navigation (so the Grid will scroll back to the
' right place on postback) and register the control to require
' postback event notifications.
'
'*********************************************************************
Protected Overrides Sub OnPreRender(e As EventArgs)
Page.SmartNavigation = True
Page.RegisterRequiresPostBack(Me)
' Get the Data
LoadDatabaseData()
' Sort the data table
_dataGridView = _dataGridData.DefaultView
If _enableSorting AndAlso SortColumn <> String.Empty Then
_dataGridView.Sort = String.Format("{0} {1}", SortColumn, SortOrder)
End If
' Get the values for editing
If _editClicked Then
Dim i As Integer
For i = 0 To _dataGridData.Columns.Count - 1
colEditValues(("txt" & _dataGridData.Columns(i).ColumnName)) = _dataGridView(EditItemIndex)(i)
Next i
End If
' Update the database with any edits
If _updateClicked Then
UpdateDatabase()
End If
' Update the database with any deletes
If _deleteClicked Then
DeleteRow(_deleteItemIndex)
End If
End Sub 'OnPreRender
'*********************************************************************
'
' RenderContents Method
'
' The main method that kicks off the rendering of the SuperDataGrid.
'
'*********************************************************************
Protected Overrides Sub RenderContents(writer As HtmlTextWriter)
' Display any error message
If _errorMessage <> String.Empty Then
RenderError(writer)
End If
' Render opening table tag
_tableStyle.AddAttributesToRender(writer)
writer.RenderBeginTag(HtmlTextWriterTag.Table)
' Render Header Row
RenderHeaderRow(writer)
' Render the HTML table
RenderTable(writer)
' Render Pager
If _enablePaging Then
RenderPager(writer)
End If
' Render End Table Tag
writer.RenderEndTag()
End Sub 'RenderContents
'*********************************************************************
'
' SuperDataGrid Constructor
'
' Set defaults for formatting (user can override).
'
'*********************************************************************
Public Sub New()
TableStyle.CellSpacing = 0
TableStyle.CellPadding = 4
TableStyle.GridLines = GridLines.Vertical
TableStyle.BorderColor = ColorTranslator.FromHtml("#999999")
TableStyle.BorderStyle = BorderStyle.Solid
TableStyle.BorderWidth = New Unit("1px")
HeaderStyle.BackColor = ColorTranslator.FromHtml("#000084")
HeaderStyle.ForeColor = Color.White
HeaderStyle.Font.Bold = True
ItemStyle.BackColor = ColorTranslator.FromHtml("#EEEEEE")
AlternatingItemStyle.BackColor = Color.Gainsboro
PagerStyle.BackColor = ColorTranslator.FromHtml("#999999")
End Sub 'New
End Class 'SuperDataGrid
End Namespace
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -