📄 defaultvb.aspx.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("'", "'").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 + -