Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/WinForms/VB/GridMainDemo/Modules/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/WinForms/VB/GridMainDemo/Modules/Validation.vb

Imports System.Collections
Imports System.ComponentModel
Imports DevExpress.Utils

Namespace DevExpress.XtraGrid.Demos
    ''' <summary>
    ''' Summary description for Validation.
    ''' </summary>
    Partial Public Class Validation
        Inherits TutorialControl

        Public Sub New()
            '
            ' Required for Windows Form Designer support
            '
            InitializeComponent()
            TutorialInfo.WhatsThisCodeFile = "VB\GridMainDemo\Modules\Validation.vb"
            TutorialInfo.WhatsThisXMLFile = "Validation.xml"
            gridControl1.ForceInitialize()
            '
            ' TODO: Add any constructor code after InitializeComponent call
            '
        End Sub

        Private appError As New AppearanceDefault(Color.White, Color.LightCoral, Color.Empty, Color.Red, System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal)
        Protected Overrides ReadOnly Property PaintViews() As PaintView()
            Get
                Return New PaintView() {New PaintView(gridView1, "Winter")}
            End Get
        End Property
#Region "Init"
        Private Sub Validation_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
            InitNWindData()
            InitValidateControls()
        End Sub

        Private tblGrid As String = "[Order Details]"
        Private tblLookUp As String = "Products"
        Protected Overrides Sub InitMDBData(ByVal connectionString As String)
            Dim ds As New DataSet()
            Dim oleDbDataAdapter As New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM " & tblGrid, connectionString)
            oleDbDataAdapter.Fill(dsNWindOrders1.Order_Details)
            oleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM " & tblLookUp, connectionString)
            oleDbDataAdapter.Fill(ds, tblLookUp)

            repositoryItemLookUpEdit1.DataSource = ds.Tables(tblLookUp)
        End Sub
        Protected Overrides Sub InitXMLData(ByVal dataFileName As String)
            Dim ds As New DataSet()
            ds.ReadXml(dataFileName)
            gridControl1.DataSource = ds.Tables("[Order Details]")
            repositoryItemLookUpEdit1.DataSource = ds.Tables(tblLookUp)
            Me.gridColumn6.VisibleIndex = -1
            Me.gridColumn6.OptionsColumn.ShowInCustomizationForm = False
        End Sub

        Private Sub InitValidateControls()
            validationControl1.spinEdit1.EditValue = 10
            validationControl2.imageComboBoxEdit1.SelectedIndex = 4
            validationControl2.spinEdit1.EditValue = 40
            validationControl3.imageComboBoxEdit1.SelectedIndex = 1
            validationControl3.imageComboBoxEdit2.SelectedIndex = 2
            validationControl3.spinEdit2.EditValue = 1
        End Sub
#End Region
#Region "Validation rule"
        '<gridControl1>
        Private Sub gridView1_ValidatingEditor(ByVal sender As Object, ByVal e As DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs) Handles gridView1.ValidatingEditor
            Dim reply() As Object = Nothing
            If gridView1.FocusedColumn.FieldName = "UnitPrice" Then
                reply = validationControl1.IsTrueCondition(e.Value)
            End If
            If gridView1.FocusedColumn.FieldName = "Quantity" Then
                reply = validationControl2.IsTrueCondition(e.Value)
            End If
            If gridView1.FocusedColumn.FieldName = "Discount" Then
                reply = validationControl3.IsTrueCondition(e.Value)
            End If
            If reply IsNot Nothing AndAlso (Not CBool(reply(0))) Then
                e.ErrorText = reply(1).ToString()
                e.Valid = False
            End If
        End Sub

        '~Customize the appearance of invalid cells 
        Private Sub gridView1_RowCellStyle(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs) Handles gridView1.RowCellStyle
            Dim val As Object = gridView1.GetRowCellValue(e.RowHandle, e.Column)
            If (e.Column.FieldName = "UnitPrice" AndAlso (Not CBool(validationControl1.IsTrueCondition(val)(0)))) OrElse (e.Column.FieldName = "Quantity" AndAlso (Not CBool(validationControl2.IsTrueCondition(val)(0)))) OrElse (e.Column.FieldName = "Discount" AndAlso (Not CBool(validationControl3.IsTrueCondition(val)(0)))) Then
                AppearanceHelper.Apply(e.Appearance, appError)
            End If
        End Sub

        Private Sub validationControl_ValidateCondition(ByVal sender As Object, ByVal e As System.EventArgs) Handles validationControl1.ValidateCondition, validationControl3.ValidateCondition, validationControl2.ValidateCondition
            gridView1.LayoutChanged()
        End Sub

        Private Sub gridView1_ValidateRow(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs) Handles gridView1.ValidateRow
            Dim val As Single = Convert.ToSingle(gridView1.GetRowCellValue(e.RowHandle, gridColumn3)) * Convert.ToInt16(gridView1.GetRowCellValue(e.RowHandle, gridColumn4)) * (1 - Convert.ToSingle(gridView1.GetRowCellValue(e.RowHandle, gridColumn5))) 'Total Sum
            If val < 0 Then
                e.ErrorText = String.Format("{0}" & vbCrLf, My.Resources.SubTotalGreaterEqual)
                e.Valid = False
            End If
        End Sub
        '</gridControl1>
#End Region
#Region "Edit errorValue style"
        Private Sub simpleButton1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles simpleButton1.Click
            Dim frm As New DevExpress.XtraEditors.XtraForm()
            frm.FormBorderStyle = FormBorderStyle.SizableToolWindow
            frm.StartPosition = FormStartPosition.Manual
            frm.Text = My.Resources.EditStyle
            frm.Location = Me.PointToScreen(New Point(simpleButton1.Left + simpleButton1.Width \ 2, panel2.Top + simpleButton1.Top + simpleButton1.Height \ 2))
            Dim grid As New DevExpress.DXperience.Demos.XtraPropertyGrid()
            grid.ShowDescription = False
            grid.ShowCategories = False
            grid.PropertyGrid.SelectedObject = appError
            AddHandler grid.PropertyGrid.CellValueChanged, AddressOf propertyValueChanged
            grid.Dock = DockStyle.Fill
            frm.Controls.Add(grid)
            frm.ShowDialog()
        End Sub

        Private Sub propertyValueChanged(ByVal sender As Object, ByVal e As DevExpress.XtraVerticalGrid.Events.CellValueChangedEventArgs)
            gridView1.LayoutChanged()
        End Sub
#End Region
        Protected Overrides Sub OnVisibleChanged(ByVal sender As Object, ByVal e As EventArgs)
            If Not Me.Visible Then
                gridView1.HideEditor()
                gridView1.CancelUpdateCurrentRow()
            End If
            MyBase.OnVisibleChanged(sender, e)
        End Sub
    End Class
End Namespace