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

📄 defaultvb.aspx.vb

📁 Telerik是很大的第三方软件制造商
💻 VB
字号:
Imports System
Imports System.Data
Imports System.Data.Common
Imports System.Data.OleDb
Imports System.Globalization
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports Telerik.WebControls
Imports Telerik.QuickStart
Imports System.Collections

Namespace Telerik.GridExamplesVBNET.DataEditing.ExtractValues
    Public Class DefaultVB
        Inherits XhtmlPage

        Protected Button1 As System.Web.UI.WebControls.Button
        Protected Linkbutton2 As System.Web.UI.WebControls.LinkButton
        Protected Linkbutton1 As System.Web.UI.WebControls.LinkButton
        Protected Linkbutton4 As System.Web.UI.WebControls.LinkButton
        Protected Button2 As System.Web.UI.WebControls.LinkButton
        Protected Label1 As System.Web.UI.WebControls.Label
        Protected WithEvents CheckBox1 As System.Web.UI.WebControls.CheckBox
        Protected CustomValidator1 As System.Web.UI.WebControls.CustomValidator
        Protected TextBox1 As System.Web.UI.WebControls.TextBox
        Protected WithEvents CheckBox2 As System.Web.UI.WebControls.CheckBox
        Protected WithEvents RadGrid1 As Telerik.WebControls.RadGrid

        Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
            Label1.Text = String.Empty
            If Not (IsPostBack) Then
                Me.Session("OrdersData") = Nothing
            End If
        End Sub

        Public ReadOnly Property OrdersData() As DataSet
            Get
                Dim obj As Object = Me.Session("OrdersData")
                If Not obj Is Nothing Then
                    Return CType(obj, DataSet)
                End If

                Dim MyOrdersData As DataSet = New DataSet

                Dim conn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("~/Grid/Data/Access/Nwind.mdb"))
                Dim adapter As OleDbDataAdapter = New OleDbDataAdapter
                adapter.SelectCommand = New OleDbCommand("SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, PostalCode, Bool FROM Customers", conn)

                adapter.Fill(MyOrdersData, "Customers")

                adapter.SelectCommand = New OleDbCommand("SELECT Orders.*, (E.FirstName + ' ' + E.LastName) AS EmployeeName " & _
                        "FROM Orders, Employees E Where Orders.EmployeeID = E.EmployeeID", conn)
                adapter.Fill(MyOrdersData, "Orders")

                adapter.SelectCommand = New OleDbCommand("SELECT EmployeeID, (FirstName + ' ' + LastName) AS FullName FROM Employees", conn)
                adapter.Fill(MyOrdersData, "Employees")

                Me.Session("OrdersData") = MyOrdersData

                Return MyOrdersData
            End Get
        End Property

        Private Sub RadGrid1_ItemCommand(ByVal source As Object, ByVal e As GridCommandEventArgs) Handles RadGrid1.ItemCommand
            If (e.CommandName = "Update") Then
                Page.Validate()
                If Not (Page.IsValid) Then
                    'UpdateCommand event will not fire
                    e.Canceled = True
                    Return
                End If
            End If
        End Sub

        Private Sub RadGrid1_NeedDataSource(ByVal source As Object, ByVal e As GridNeedDataSourceEventArgs) Handles RadGrid1.NeedDataSource
            RadGrid1.DataSource = Me.OrdersData
        End Sub

        Private Sub RadGrid1_PreRender(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.PreRender
            If Not IsPostBack Then
                Me.RadGrid1.MasterTableView.Items(1).Edit = True
                Me.RadGrid1.MasterTableView.Rebind()
            End If
        End Sub


        Private Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
            If (CheckBox1.Checked) Then
                RadGrid1.MasterTableView.EditMode = GridEditMode.EditForms
            Else
                RadGrid1.MasterTableView.EditMode = GridEditMode.InPlace
            End If
            RadGrid1.Rebind()
        End Sub

        Private Sub CheckBox2_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged
            Me.RadGrid1.AllowMultiRowEdit = CheckBox2.Checked
        End Sub

        Private Sub RadGrid1_CreateColumnEditor(ByVal sender As Object, ByVal e As Telerik.WebControls.GridCreateColumnEditorEventArgs)
            If (TypeOf e.Column Is GridBoundColumn) Then
                If (CType(e.Column, GridBoundColumn).DataField = "ShipAddress") Then
                    e.ColumnEditor = New MultiLineTextBoxColumnEditor
                ElseIf (CType(e.Column, GridBoundColumn).DataField = "OrderDate") Then
                    e.ColumnEditor = New DateColumnEditor
                End If
            End If
        End Sub

        Private Sub RadGrid1_UpdateCommand(ByVal source As System.Object, ByVal e As Telerik.WebControls.GridCommandEventArgs) Handles RadGrid1.UpdateCommand
            Dim editedItem As GridEditableItem = CType(e.Item, GridEditableItem)
            Dim ordersTable As DataTable = Me.OrdersData.Tables("Orders")

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

            If changedRows.Length <> 1 Then
                Me.Label1.Text += "Unbale to locate the Order for updating."
                e.Canceled = True
                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
            e.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()
                Label1.Text += "Unable to update Orders. Reason: " + ex.Message
                e.Canceled = True

            End Try

            'Code for updating the database can go here...
            Label1.Text += "Order " + CStr(changedRow("OrderID")) + " updated"
        End Sub

        Private Sub RadGrid1_InsertCommand(ByVal source As Object, ByVal e As WebControls.GridCommandEventArgs) Handles RadGrid1.InsertCommand
            Dim editedItem As GridEditableItem = CType(e.Item, GridEditableItem)
            Dim ordersTable As DataTable = Me.OrdersData.Tables("Orders")

            Dim newRow As DataRow = ordersTable.NewRow()

            'As this example demonstrates only in-memory editing, a new primery key value should be generated
            'This should not be applied when updating directly the database
            Dim allValues As DataRow() = ordersTable.Select("", "OrderID", DataViewRowState.CurrentRows)
            If (allValues.Length > 0) Then
                newRow("OrderID") = CInt(allValues(allValues.Length - 1)("OrderID") + 1)
            Else
                newRow("OrderID") = 1 'the table is empty
            End If

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

            Try
                Dim entry As DictionaryEntry
                For Each entry In newValues
                    newRow(CStr(entry.Key)) = entry.Value
                Next
            Catch ex As Exception
                Label1.Text += "Unable to insert into Orders. Reason: " + ex.Message
                e.Canceled = True
            End Try

            ordersTable.Rows.Add(newRow)
            'Code for updating the database ca go here...

            Label1.Text = Label1.Text + "Order " + CStr(newRow("OrderID")) + " inserted"
        End Sub

        Private Class MultiLineTextBoxColumnEditor
            Inherits GridTextColumnEditor
            Private MyTextBox As TextBox

            Protected Overrides Sub LoadControlsFromContainer()
                Me.MyTextBox = CType(Me.ContainerControl.Controls(1), TextBox)
            End Sub

            Public Overrides ReadOnly Property IsInitialized() As Boolean
                Get
                    If Not Me.MyTextBox Is Nothing Then
                        Return True
                    Else
                        Return False
                    End If
                End Get
            End Property

            Public Overrides Property Text() As String
                Get
                    Return Me.MyTextBox.Text()
                End Get
                Set(ByVal Value As String)
                    Me.MyTextBox.Text = Value
                End Set
            End Property

            Protected Overrides Sub AddControlsToContainer()
                Me.ContainerControl.Controls.Add(New LiteralControl("<b>Custom multi-line text editor</b><br />"))
                Me.MyTextBox = New TextBox
                Me.MyTextBox.TextMode = TextBoxMode.MultiLine
                Me.MyTextBox.Rows = 4
                Me.MyTextBox.Columns = 40
                Me.MyTextBox.BackColor = (CType(New WebColorConverter().ConvertFromString("#EDEDED"), Color))
                Me.ContainerControl.Controls.Add(Me.MyTextBox)
            End Sub
        End Class

        Private Class DateColumnEditor
            Inherits GridTextColumnEditor
            Private MyTextBox As TextBox
            Private WithEvents MyValidator As CustomValidator
            Private reqValidator As RequiredFieldValidator

            Protected Overrides Sub LoadControlsFromContainer()
                Me.MyTextBox = CType(Me.ContainerControl.Controls(1), TextBox)
            End Sub

            Public Overrides ReadOnly Property IsInitialized() As Boolean
                Get
                    If Not Me.MyTextBox Is Nothing Then
                        Return True
                    Else
                        Return False
                    End If
                End Get
            End Property

            Public Overrides Property Text() As String
                Get
                    Return Me.MyTextBox.Text()
                End Get
                Set(ByVal Value As String)
                    Me.MyTextBox.Text = Value
                End Set
            End Property

            Protected Overrides Sub AddControlsToContainer()
                Me.ContainerControl.Controls.Add(New LiteralControl("<b>Custom date column editor with validator</b><br />"))

                Me.MyTextBox = New TextBox

                Me.ContainerControl.Controls.Add(Me.MyTextBox)

                Me.MyValidator = New CustomValidator
                Me.MyTextBox.ID = "tbDate"
                Me.MyValidator.ControlToValidate = Me.MyTextBox.ID
                Me.MyValidator.ErrorMessage = " Please, enter a valid date"

                Me.reqValidator = New RequiredFieldValidator
                Me.reqValidator.ErrorMessage = "This field is required."
                Me.reqValidator.ControlToValidate = Me.MyTextBox.ID

                Me.ContainerControl.Controls.Add(Me.MyValidator)
                Me.ContainerControl.Controls.Add(Me.reqValidator)
            End Sub

            Private Sub ValidateDate(ByVal source As System.Object, ByVal args As ServerValidateEventArgs) Handles MyValidator.ServerValidate
                Try
                    Dim expectedFormats As String() = {"d", "D", "f", "F", "G", "g"}
                    DateTime.ParseExact(args.Value, expectedFormats, Nothing, DateTimeStyles.AllowWhiteSpaces)
                    args.IsValid = True
                Catch ex As Exception
                    args.IsValid = False
                    Me.MyValidator.Attributes("title") = ex.Message
                End Try
            End Sub

        End Class

    End Class
End Namespace


⌨️ 快捷键说明

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