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

📄 defaultvb.aspx.vb

📁 Telerik是很大的第三方软件制造商
💻 VB
字号:
Imports System
Imports Telerik.QuickStart
Imports Telerik.QuickStart.Grid
Imports Telerik.WebControls

Namespace Telerik.GridExamplesVBNET.AJAX.EditOnDblClick

    Public MustInherit Class DefaultVB
        Inherits XhtmlPage
        Protected WithEvents RadGrid1 As RadGrid
        Protected Label1 As System.Web.UI.WebControls.Label

        Private Sub RadGrid1_NeedDataSource(ByVal [source] As Object, ByVal e As GridNeedDataSourceEventArgs) Handles RadGrid1.NeedDataSource
            RadGrid1.DataSource = OrderDetails
        End Sub

        Protected Overrides Sub RaisePostBackEvent(ByVal source As IPostBackEventHandler, ByVal eventArgument As String)
            MyBase.RaisePostBackEvent(source, eventArgument)
            If TypeOf source Is RadGrid Then
                Dim postBackEventArgumentData As String() = eventArgument.Split(":")
                Select Case postBackEventArgumentData(0)
                    Case "Edit"
                        CType(CType(RadGrid1.MasterTableView.Controls(0), Table).Rows(Integer.Parse(postBackEventArgumentData(1))), GridItem).Edit = True
                        RadGrid1.Rebind()
                    Case "Update"
                        Dim item As GridItem = CType(CType(RadGrid1.MasterTableView.Controls(0), Table).Rows(Integer.Parse(postBackEventArgumentData(1))), GridItem)
                        UpdateItem(item)
                        RadGrid1.Rebind()
                End Select
            End If
        End Sub

        Private ReadOnly Property OrderDetails() As DataTable
            Get
                If (Not Me.Session("OrderDetails") Is Nothing) Then
                    Return CType(Me.Session("OrderDetails"), DataTable)
                End If

                Dim res As DataTable = DataSourceHelperVB.GetDataTable("SELECT * FROM [Order Details]")
                Me.Session("OrderDetails") = res
                Return res
            End Get
        End Property


        Private Sub RadGrid1_ColumnCreated(ByVal sender As Object, ByVal e As WebControls.GridColumnCreatedEventArgs) Handles RadGrid1.ColumnCreated
            If TypeOf e.Column Is GridBoundColumn Then
                If CType(e.Column, GridBoundColumn).DataField = "OrderID" Or CType(e.Column, GridBoundColumn).DataField = "ProductID" Then
                    CType(e.Column, GridBoundColumn).ReadOnly = True
                    e.Column.HeaderStyle.Width = Unit.Pixel(60)
                Else
                    e.Column.HeaderStyle.Width = Unit.Pixel(150)
                End If
            End If
        End Sub

        Private Sub UpdateItem(ByVal item As GridItem)
            Dim editedItem As GridEditableItem = CType(item, GridEditableItem)
            Dim ordersTable As DataTable = Me.OrderDetails

            'Locate the changed row in the DataSource
            Dim changedRows As DataRow() = ordersTable.Select("OrderID = " & editedItem("OrderID").Text & " AND " & " ProductID = " & editedItem("ProductID").Text)

            Dim labelID As String = Me.Label1.ClientID
            Dim clientExecute As String = String.Format("document.getElementById('{0}').innerHTML = '{1}';", labelID, "")

            If changedRows.Length <> 1 Then
                clientExecute = String.Format("document.getElementById('{0}').innerHTML = '{1}';", labelID, "Unbale to locate the Order for updating.")
                Me.RadGrid1.ClientSettings.ClientEvents.OnGridCreated = clientExecute
                Return
            End If

            'Update new values
            Dim newValues As Hashtable = New Hashtable
            'The GridTableView will fill the values from all editable columns in the hash
            item.OwnerTableView.ExtractValuesFromItem(newValues, editedItem)

            Dim changedRow As DataRow = changedRows(0)
            changedRow.BeginEdit()
            Try

                Dim entry As DictionaryEntry
                For Each entry In newValues
                    changedRow(CStr(entry.Key)) = entry.Value
                Next

                changedRow.EndEdit()

            Catch ex As Exception

                changedRow.CancelEdit()
                'In AJAX mode this will update the corresponding label text, client-side:
                clientExecute = String.Format("document.getElementById('{0}').innerHTML = '{1}';", labelID, Server.HtmlEncode("Unable to update Orders. Reason: " + ex.Message).Replace("'", "&#39;").Replace(vbCrLf, "<br />"))
                Me.RadGrid1.ClientSettings.ClientEvents.OnGridCreated = clientExecute
                Return

            End Try

            'Code for updating the database can go here...
            clientExecute = String.Format("document.getElementById('{0}').innerHTML = '{1}';", labelID, "Order " & changedRow("OrderID").Text & ", ProductID " & changedRow("ProductID").Text & " updated")
            Me.RadGrid1.ClientSettings.ClientEvents.OnGridCreated = clientExecute
        End Sub

        Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim clientExecute As String = String.Format("document.getElementById('{0}').innerHTML = '';", Me.Label1.ClientID)
            Me.RadGrid1.ClientSettings.ClientEvents.OnGridCreated = clientExecute
        End Sub
    End Class
End Namespace

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -