Click here to Skip to main content
15,886,799 members
Articles / Programming Languages / Visual Basic

TeamVision

Rate me:
Please Sign up or sign in to vote.
3.08/5 (11 votes)
16 Nov 2009CPL3 min read 84K   5.4K   69  
A simple project task management application. A managed approach to help keep on top of your projects.

Namespace Controls.Lists
    Public Class UserList

        Private m_ResourceManager As New Resources.ResourceManager("TeamVision.Localize", System.Reflection.Assembly.GetExecutingAssembly())

        Private WithEvents DataGridPrinter1 As DataGridPrinter = Nothing

        Private Delegate Sub InitializeData()

        Private m_SelectedIndex As Integer = 0

        Private m_User As Business.User

        Private m_Filter As String = ""

        Public Sub New()
            MyBase.New()
            Me.InitializeComponent()
            AddHandler Load, AddressOf Me.UserListPane_Load
        End Sub

#Region "UserListPane_Load"
        Private Sub UserListPane_Load(ByVal sender As Object, ByVal e As System.EventArgs)
            Me.Initialize()
        End Sub
#End Region

#Region "Initialize"
        Sub Initialize()
            Me.Cursor = Cursors.WaitCursor
            ' 
            Me.BeginInvoke(New InitializeData(AddressOf InitializeListView))
            Me.InitializeHandlers()
            ' 
            Me.Cursor = Cursors.Default
        End Sub
#End Region

#Region "InitializeListView"
        Private Sub InitializeListView()
            Me.Databind()
        End Sub
#End Region

#Region "InitializeHandlers"
        Private Sub InitializeHandlers()
            AddHandler Me.UsersGrid1.SelectionChanged, AddressOf Me.SelectionChanged
            AddHandler Me.UsersGrid1.DoubleClick, AddressOf Me.cmiOpen_Click

            '
            ' TODO: Add context menu(s)
            'AddHandler Me.cmiNew.Click, AddressOf Me.cmiNew_Click
            'AddHandler Me.cmiDelete.Click, AddressOf Me.cmiDelete_Click
            'AddHandler Me.cmiSelectAll.Click, AddressOf Me.cmiSelectAll_Click
            'AddHandler Me.cmiPrint.Click, AddressOf Me.cmiPrint_Click
            'AddHandler Me.cmiOpen.Click, AddressOf Me.cmiOpen_Click
        End Sub
#End Region

#Region "Databind"
        Public Sub Databind()
            Try
                Dim sql As String = "UserID >0"
                If CBool(Me.m_Filter.Length > 0) Then sql = Me.m_Filter

                '
                ' Append Order by clause 
                '
                sql += " ORDER By " + Columns.User.Name
                Dim dt As Schema.UserTable = UserManager.GetUserTableWhere(sql)
                Me.UsersGrid1.DataBind(dt)
            Catch ex As System.Exception
            End Try
        End Sub
#End Region

#Region "DataBind"
        Public Sub DataBind(ByVal e As Common.EventArgs)
            Dim mDomain As Common.Domains = e.Domain
            '
            'Set Category
            '
            Select Case mDomain

                Case Common.Domains.Users  ' Set User
                    Me.m_User = TryCast(e, EventArgs.UserEventArgs).User
                    Me.m_Filter = Columns.User.UserIDColumn + "=" + Me.m_User.UserID.ToString

            End Select

            Me.Databind()
        End Sub
#End Region

#Region "Reload"
        Private Sub Reload()
            Me.m_Filter = ("UserID > 0 AND " + Me.m_Filter)
            Me.InitializeListView()
        End Sub
#End Region

#Region "Reload"
        Public Sub Reload(ByVal Filter As String)
            Me.m_Filter = Filter
            Me.Databind()
        End Sub
#End Region

#Region "SelectionChanged"
        Private Sub SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        End Sub
#End Region

#Region "cmiNew_Click"
        Private Sub cmiNew_Click(ByVal sender As Object, ByVal e As System.EventArgs)
            Me.CreateNew()
        End Sub
#End Region

#Region "cmiDelete_Click"
        Private Sub cmiDelete_Click(ByVal sender As Object, ByVal e As System.EventArgs)
            Me.Delete()
        End Sub
#End Region

#Region "Delete"
        Public Sub Delete()
            Try
                If (Me.UsersGrid1.SelectedRows.Count <= 0) Then Return

                Dim i As Integer = 0
                Dim item As DataGridViewRow = Nothing

                Do While i <= CInt(Me.UsersGrid1.SelectedRows.Count - 1)
                    Try
                        item = Me.UsersGrid1.SelectedRows(i)
                        Dim row As Schema.UserRow = CType(Me.UsersGrid1.SelectedRows(i).Tag, Schema.UserRow)

                        UserManager.Delete(row.UserID)
                    Catch ex As System.Exception
                        ' Ignore deletion errors
                    End Try

                    i += 1
                Loop

                Me.Databind()
            Catch ex As System.Exception
            End Try
        End Sub
#End Region

#Region "cmiSelectAll_Click"
        Private Sub cmiSelectAll_Click(ByVal sender As Object, ByVal e As System.EventArgs)
            Me.SelectAll()
        End Sub
#End Region

#Region "SelectAll"
        Public Sub SelectAll()
            Me.UsersGrid1.SelectAll()
        End Sub
#End Region

#Region "cmiPrint_Click"
        Private Sub cmiPrint_Click(ByVal sender As Object, ByVal e As System.EventArgs)
            Try
                If (Me.UsersGrid1.SelectedRows.Count <= 0) Then
                    Return
                End If
                Me.Print()
            Catch ex As System.Exception
            End Try
        End Sub
#End Region

#Region "cmiOpen_Click"
        Private Sub cmiOpen_Click(ByVal sender As Object, ByVal e As System.EventArgs)
            Me.Open()
        End Sub
#End Region

#Region "CreateNew"
        Public Sub CreateNew()
            Try
                Dim biz As Business.User = New Business.User

                Dim Frm As New Forms.Users.FrmAdd
                Frm.Databind(New EventArgs.UserEventArgs(biz))
                Frm.ShowDialog()

            Catch ex As System.Exception
            End Try
        End Sub
#End Region

#Region "Open"
        Public Sub Open()
            Try
                If (Me.UsersGrid1.SelectedRows.Count <= 0) Then
                    Return
                End If
                Me.m_SelectedIndex = Me.UsersGrid1.SelectedRows(0).Index
                Dim row As Schema.UserRow = CType(Me.UsersGrid1.SelectedRows(0).Tag, Schema.UserRow)
                '
                ' Initialize a new business object using the row data 
                '
                Dim Frm As New Forms.Users.FrmEdit
                Dim biz As Business.User = New Business.User(row)
                Frm.Databind(New EventArgs.UserEventArgs(biz))
                Frm.ShowDialog()
                '
                ' After the form closes refresh this list 
                '
                Me.Databind()
                Me.UsersGrid1.Rows(0).Selected = False
                Me.UsersGrid1.Rows(Me.m_SelectedIndex).Selected = True
                Me.UsersGrid1.CurrentCell = Me.UsersGrid1.Rows(Me.m_SelectedIndex).Cells(0)
            Catch ex As System.Exception
            End Try
        End Sub
#End Region

#Region "Print"
        Friend Sub Print()
            Try
                Dim PrintDocument1 As New System.Drawing.Printing.PrintDocument
                AddHandler PrintDocument1.PrintPage, AddressOf PrintDocument1_PrintPage

                Dim dsUsers As Schema.UserTable = TryCast(Me.UsersGrid1.DataSource, Schema.UserTable)
                DataGridPrinter1 = New DataGridPrinter(UsersGrid1, PrintDocument1)

                Dim pDialogResult As System.Windows.Forms.DialogResult = PrintDialog1.ShowDialog()
                Me.Refresh()
                If pDialogResult = System.Windows.Forms.DialogResult.OK Then PrintDocument1.Print()

            Catch iex As System.Drawing.Printing.InvalidPrinterException
                MessageBox.Show(m_ResourceManager.GetString("no_printer"), "Printer Error")
            End Try
        End Sub
#End Region

#Region " Print Preview and Dialog "
        Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
            e.HasMorePages = DataGridPrinter1.DrawDataGridView(e.Graphics)
            If e.HasMorePages Then
                DataGridPrinter1.PageNumber += 1
            Else
                DataGridPrinter1.PageNumber = 1
                DataGridPrinter1.RowCount = 0
            End If
        End Sub
#End Region

    End Class
End Namespace

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Common Public License Version 1.0 (CPL)


Written By
Founder Arkitech EBC Corporation
United States United States
MS, BBA, software developer, consultant, and trainer. Specializing in building data-centric applications designed for business, university, community & faith based organizations. Started developing Excel VBA macros and never looked back. Freelance developer utilizing VB.Net, SQL Server, Microsoft Access, and ASP.Net.

Comments and Discussions