Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/09/2004, 06:24
MartinAcevedo
 
Fecha de Ingreso: junio-2001
Ubicación: Cordoba, Argentina
Mensajes: 190
Antigüedad: 22 años, 11 meses
Puntos: 0
Un ejemplito que hice .... espero sirva saludos...
------ ASPX
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="Test.aspx.vb" Inherits="BillingVoipLab.Test" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>Test</title>
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body ms_positioning="GridLayout" >
<form id="Form1" method="post" runat="server">
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 160px; POSITION: absolute; TOP: 80px"
runat="server" AllowPaging="True" DataKeyField="IntegerValue">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:CheckBox id="chk" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle Mode="NumericPages"></PagerStyle>
</asp:DataGrid>
</form>
</body>
</HTML>

--- CODE BEHIND

Public Class Test
Inherits System.Web.UI.Page

#Region " Código generado por el Diseñador de Web Forms "

'El Diseñador de Web Forms requiere esta llamada.
''' <summary>
''' Summary of InitializeComponent.
''' </summary>
'''
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub
Protected WithEvents Button2 As System.Web.UI.WebControls.Button
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid







'NOTA: el Diseñador de Web Forms necesita la siguiente declaración del marcador de posición.
'No se debe eliminar o mover.
Private designerPlaceholderDeclaration As System.Object

''' <summary>
''' Summary of Page_Init.
''' </summary>
''' <param name=sender></param>
''' <param name=e></param>
'''
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: el Diseñador de Web Forms requiere esta llamada de método
'No la modifique con el editor de código.
InitializeComponent()
End Sub

#End Region


Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not IsPostBack Then
'se crea un hash table para guardar los seleccionados
viewstate("hshSeleccionados") = New Hashtable
BindGrid()
End If

End Sub
Private Sub BindGrid()
Me.DataGrid1.DataSource = CreateDataSource()
Me.DataGrid1.DataBind()
End Sub



Private Sub DataGrid1_PageIndexChanged1(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEvent Args) Handles DataGrid1.PageIndexChanged
DataGrid1.CurrentPageIndex = e.NewPageIndex
GuardarSeleccionados()
Me.BindGrid()
End Sub
Private Sub GuardarSeleccionados()
'guarda los checkbox seleccionados en el hastable(solo usa el id en la clave)
'si no esta seleccionado lo saca del hashtable
'el id es el campo IntegerValue
Dim chk As CheckBox
For Each itm As DataGridItem In DataGrid1.Items
chk = itm.FindControl("chk")
If chk.Checked Then
If Not CType(viewstate("hshSeleccionados"), Hashtable).Contains(DataGrid1.DataKeys(itm.ItemInd ex)) Then
CType(viewstate("hshSeleccionados"), Hashtable).Add(DataGrid1.DataKeys(itm.ItemIndex), "")
End If
Else
If CType(viewstate("hshSeleccionados"), Hashtable).Contains(DataGrid1.DataKeys(itm.ItemInd ex)) Then
CType(viewstate("hshSeleccionados"), Hashtable).Remove(DataGrid1.DataKeys(itm.ItemIndex ))
End If
End If
Next
End Sub


Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
If e.Item.ItemIndex <> -1 Then
'Se fija si esta en el hashtable y lo checkea si es asi
Dim chk As CheckBox
chk = e.Item.FindControl("chk")
If CType(viewstate("hshSeleccionados"), Hashtable).Contains(DataGrid1.DataKeys(e.Item.Item Index)) Then
chk.Checked = True
End If
End If
End Sub

Function CreateDataSource() As ICollection
'origen de datos de prueba
Dim dt As New DataTable
Dim dr As DataRow

dt.Columns.Add(New DataColumn("IntegerValue", GetType(Int32)))
dt.Columns.Add(New DataColumn("StringValue", GetType(String)))
dt.Columns.Add(New DataColumn("CurrencyValue", GetType(Double)))

Dim i As Integer
For i = 0 To 50
dr = dt.NewRow()

dr(0) = i
dr(1) = "Item " + i.ToString()
dr(2) = 1.23 * (i + 1)

dt.Rows.Add(dr)
Next i

Dim dv As New DataView(dt)
Return dv

End Function 'CreateDataSource
End Class
__________________
Martin