⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 superdatagrid.vb

📁 asp.net技术内幕的书配源码
💻 VB
📖 第 1 页 / 共 3 页
字号:
                    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("&nbsp;")
            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("&nbsp;")
        
        ' Render each page number
        Dim pageIndex As Integer
        For pageIndex = 1 To pageCount
            writer.Write("&nbsp;")
            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("&nbsp;")
        Next pageIndex
        
        
        ' render next link
        writer.Write("&nbsp;")
        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 + -