List View- Visual basic Net

Listview El control ListView de formularios Windows Forms muestra una lista de elementos con iconos. Puede utilizar una

Views 140 Downloads 6 File size 145KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Listview El control ListView de formularios Windows Forms muestra una lista de elementos con iconos. Puede utilizar una vista de lista para crear una interfaz de usuario similar al panel derecho del Explorador de Windows. El control tiene cuatro modos de vista: LargeIcon, SmallIcon, List y Details. El modo LargeIcon muestra iconos grandes junto al texto de los elementos; si el control es lo suficientemente grande, los elementos aparecen en varias columnas. El modo SmallIcon es igual, pero muestra iconos pequeños. El modo List muestra iconos pequeños, pero siempre en una sola columna. El modo Details muestra los elementos en varias columnas. La propiedad clave del control ListView es Items, que contiene los elementos que muestra el control. La propiedad SelectedItems contiene la colección de elementos seleccionados actualmente en el control. Si la propiedad MultiSelect se establece en true, el usuario puede seleccionar varios elementos, por ejemplo, para arrastrar y colocar en otro control varios elementos a la vez. Si la propiedad CheckBoxes se establece en true, el control ListView puede mostrar casillas de verificación junto a los elementos.La propiedad Activation determina el tipo de acción que debe realizar el usuario para activar los elementos de la lista: las opciones son Standard, OneClick y TwoClick. La activación OneClick necesita un solo clic para activar el elemento. La activación TwoClick requiere que el usuario haga doble clic para activar el elemento; un solo clic cambia el color del texto del elemento. La activación Standard requiere que el usuario haga doble clic para activar un elemento, pero la apariencia del elemento no cambia. Empleando la BDD BDventas(Clientes, Fac_cabe, Fac_deta,artículos) realizar el formulario:

Listbox1

LISTVIEW1

Configurando el ListView

Codificacion del Formulario Imports System.data Imports System.Data.SqlClient Public Class Form1 Dim cn As New SqlConnection("Server=localhost;Integrated Security=SSPI;database=ventas") Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Mostrar los empleados Dim da As New SqlDataAdapter("Select cod_emp,nombre from empleado", cn) Dim tbl As New DataTable da.Fill(tbl) ListBox1.DataSource = tbl ListBox1.DisplayMember = "nombre" ListBox1.ValueMember = "cod_emp" Call formatoListview1() End Sub Sub formatoListview1() 'dando formato al listview With ListView1 .Items.Clear() .View = View.Details .Columns.Add("Factura", 80, HorizontalAlignment.Left) .Columns.Add("Sub Total", 80, HorizontalAlignment.Left) .Columns.Add("Igv", 80, HorizontalAlignment.Left) .Columns.Add("Total", 80, HorizontalAlignment.Left) .GridLines = True .FullRowSelect = True End With End Sub Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged 'Mostrar las 5 ordenes con mayor igv Try 'controlador de errores Dim codigo As String = ListBox1.SelectedValue Dim cadsql As String = "Select top 5 Num_fact,sub_total,igv,total " & _ " from facturas Where cod_emp=@codigo" Dim cmd As New SqlCommand(cadsql, cn) cmd.CommandType = CommandType.Text cn.Open() cmd.Parameters.Add("@codigo", SqlDbType.Char, 5).Value = codigo

Dim dr As SqlDataReader = cmd.ExecuteReader If dr.HasRows = True Then ListView1.Items.Clear() Dim LstItem As ListViewItem

While dr.Read LstItem = ListView1.Items.Add(dr(0).ToString) LstItem.SubItems.Add(dr(1).ToString) LstItem.SubItems.Add(dr(2).ToString) LstItem.SubItems.Add(dr(3).ToString) End While End If lblcantreg.Text = ListView1.Items.Count Catch ex As Exception Finally cn.Close() End Try End Sub Private Sub ListView1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.Click 'Mostrando los datos de la columna With ListView1 Dim factura As String = .Items.Item(.SelectedIndices(0)).Text Dim subtotal As String = .Items.Item(.SelectedIndices(0)).SubItems(1).Text MessageBox.Show(factura & " - " & subtotal) End With End Sub End Class Las Tablas de la base de datos Ventas CREATE TABLE Empleado( cod_emp char(5) Not NULL , nombre varchar(25) Not NULL , cargo varchar(20) NULL , )

CREATE TABLE Facturas ( num_fact char(6) Not Null, cod_emp char(5), cod_cli char(5), sub_total decimal(8,2), igv decimal(8,2), total decimal(8,2), fecha datetime,

) Llenar datos consistentes

AddHandler (Instrucción) Asocia un evento a un controlador de eventos en tiempo de ejecución. AddHandler event, AddressOf eventhandler

Partes event

Nombre del evento que se va a controlar.

Eventhandler Nombre del procedimiento que controlará el evento. Comentarios Las instrucciones AddHandler y RemoveHandler permiten iniciar y detener el controlador del evento en cualquier momento de la ejecución del programa. La firma del procedimiento eventhandler debe coincidir con la firma del evento event. La palabra clave Handles y la instrucción AddHandler permiten especificar que ciertos procedimientos controlen eventos determinados, pero hay diferencias entre ambos. La instrucción AddHandler conecta los procedimientos a los eventos en tiempo de ejecución. Utilice la palabra clave Handles al definir un procedimiento para especificar que controla un evento determinado. Para obtener más información, vea Handles.

En los eventos personalizados, la instrucción AddHandler invoca al descriptor de acceso AddHandler del evento. Para obtener más información sobre eventos personalizados, vea Event (Instrucción). Ejemplo Sub TestEvents() Dim Obj As New Class1 ' Associate an event handler with an event. AddHandler Obj.Ev_Event, AddressOf EventHandler ' Call the method to raise the event. Obj.CauseSomeEvent() ' Stop handling events. RemoveHandler Obj.Ev_Event, AddressOf EventHandler ' This event will not be handled. Obj.CauseSomeEvent() End Sub Sub EventHandler() ' Handle the event. MsgBox("EventHandler caught event.") End Sub Public Class Class1 ' Declare an event. Public Event Ev_Event() Sub CauseSomeEvent()

' Raise an event. RaiseEvent Ev_Event() End Sub End Class RemoveHandler (Instrucción) Quita la asociación entre un evento y un controlador de eventos. RemoveHandler event, AddressOf eventhandler Partes event Nombre del evento que se va a controlar. eventhandler Nombre del procedimiento que controla actualmente el evento. Comentarios Las instrucciones AddHandler y RemoveHandler permiten iniciar y detener el control del evento de un evento específico en cualquier momento de la ejecución del programa. Para los eventos personalizados, la instrucción RemoveHandler llama al descriptor de acceso RemoveHandler del evento. Para obtener más información sobre eventos personalizados, vea Event (Instrucción). Ejemplo Sub TestEvents() Dim Obj As New Class1 ' Associate an event handler with an event. AddHandler Obj.Ev_Event, AddressOf EventHandler ' Call the method to raise the event. Obj.CauseSomeEvent() ' Stop handling events. RemoveHandler Obj.Ev_Event, AddressOf EventHandler ' This event will not be handled. Obj.CauseSomeEvent() End Sub

Sub EventHandler()

' Handle the event. MsgBox("EventHandler caught event.") End Sub

Public Class Class1 ' Declare an event. Public Event Ev_Event() Sub CauseSomeEvent() ' Raise an event. RaiseEvent Ev_Event() End Sub End Class

Veamos un ejemplo con el llenado de datos en un ComboBox, mediante el evento form1_load, y llamando a la vez al evento SelectedIndexChanged del ComboBox. Al momento de llenar el ComboBox1 en el evento Form1_Load, usted evitara llamar al evento SelectedIndexChanged con la finalidad de mostrar datos erróneos, debido a que se esta asignando objetos y campos en sus propiedades. Imports System.Data Imports System.Data.Sqlclient Public Class Form1 Dim cn As New SqlConnection("Server=localhost;Integrated Security=SSPI;database=NorthWind") Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load MostrarOrdenes() End Sub Sub MostrarOrdenes() RemoveHandler ComboBox1.SelectedIndexChanged, _ AddressOf ComboBox1_SelectedIndexChanged Dim da As New SqlDataAdapter("Select CustomerID,CompanyName From Customers", cn) Dim tbl As New DataTable

da.Fill(tbl) ComboBox1.DataSource = tbl ComboBox1.DisplayMember = "CompanyName" ComboBox1.ValueMember = "CustomerID" AddHandler ComboBox1.SelectedIndexChanged, _ AddressOf ComboBox1_SelectedIndexChanged End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged Dim da As New SqlDataAdapter("Select OrderID From Orders Where CustomerID='" & ComboBox1.SelectedValue & "'", cn) Dim tbl As New DataTable da.Fill(tbl) ListBox1.DataSource = tbl ListBox1.DisplayMember = "OrderID" End Sub End Class