Hola
sabinajoa:
No, todavía no he encontrado la solución. Sigo esperando a que alguien me indique las pistas necesarias para conseguir el resultado deseado.
¿Tu también estás trabajando en C#?
Bueno, yo en funcionamiento, en un ejemplo de aplicación he visto que se puede conseguir. Se trata de la aplicación MSDN Video.
(
http://www.desarrollaconmsdn.com/msdn/MSDNVideo.aspx)
Desde el enlace [Frontal web], se ve como se ejecuta una lista con la información de dos películas por cada fila.
Yendo a la Guía de Implementación >> Consulta online >> Frontal web >> Control lista de películas
ó
http://www.desarrollaconmsdn.com/msd...aPeliculas.htm
se llega a una pequeña explicación de como construir un DataSet para que almacene dos registros por cada fila.
Me baje el proyecto pero está hecho en VisualBasic.
Abrí el archivo (uno llamado ListaPeliculas.ascx dentro de la carpeta Cliente Web) para ver si podía pasarlo a código .CS pero no llego a transformarlo sin que me dé error. Hay cosas que no sé a qué se refieren.
Este es parte del código del archivo en el parte de código[ListaPeliculas.ascx.vb]
(en negrita, la parte relacionada con lo comentado)
Código:
Imports System
Imports System.Data
Imports ClienteWeb.ServicioCatalogo
Partial Class ListaPeliculas
Inherits System.Web.UI.UserControl
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Protected WithEvents DataList1 As System.Web.UI.WebControls.DataList
Protected WithEvents Literal1 As System.Web.UI.WebControls.Literal
Protected WithEvents Repeater2 As System.Web.UI.WebControls.Repeater
'NOTE: The following placeholder declaration is required by the Web Form Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
#End Region
Private _peliculas As PeliculasDS
Private _comenzarEn As Integer
...
...
...
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Public Property Peliculas() As PeliculasDS
Get
Return _peliculas
End Get
Set(ByVal Value As PeliculasDS)
_peliculas = Value
End Set
End Property
Public Property Lista() As String()
Get
Return Nothing
End Get
Set(ByVal Value As String())
End Set
End Property
Public Property ComenzarEn() As Integer
Get
Return _comenzarEn
End Get
Set(ByVal Value As Integer)
_comenzarEn = Value
End Set
End Property
Private Property PrimerOrdinal() As Integer
Get
If ViewState(Me.ID + "_PrimerOrdinal") Is Nothing Then
ViewState(Me.ID + "_PrimerOrdinal") = 1
End If
Return CInt(ViewState(Me.ID + "_PrimerOrdinal"))
End Get
Set(ByVal Value As Integer)
ViewState(Me.ID + "_PrimerOrdinal") = Value
End Set
End Property
Public Property Paginacion() As Boolean
Get
Return PanelPagina.Visible
End Get
Set(ByVal Value As Boolean)
PanelPagina.Visible = Value
End Set
End Property
...
...
...
Private Sub Page_DataBinding(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.DataBinding
Dim dsPeliculas As New DataSet
Dim i As Integer
Dim dt As DataTable
Dim dc As DataColumn
' Hay registros?
If Not IsPostBack And _peliculas.Peliculas.Count = 0 Then
SinRegistros.Visible = True
PanelPagina.Visible = False
Return
End If
' Caben en una página?
If Not IsPostBack And _peliculas.Peliculas.Count < Integer.Parse(NumRegistros.SelectedValue) Then
PanelPagina.Visible = False
PanelLinea.Visible = True
End If
' Es ésta la última página?
If Paginacion And Integer.Parse(NumRegistros.SelectedValue) = _peliculas.Peliculas.Count Then
' Almaceno último registro
ViewState(Me.ID + "_UltimoCodBarras") = _peliculas.Peliculas(_peliculas.Peliculas.Count - 1).CodBarras
ViewState(Me.ID + "_UltimoTitulo") = _peliculas.Peliculas(_peliculas.Peliculas.Count - 1).Titulo
derecha.Visible = True
Else
derecha.Visible = False
End If
ViewState(Me.ID + "_NumRegistros") = _peliculas.Peliculas.Count
'
' Gestión del primer registro para poder volver hacia atrás
'
' Es la primera página?
If Not IsPostBack Then
ViewState(Me.ID + "_PeliculaPrimeraPagina") = _peliculas.Peliculas(0).CodBarras
izquierda.Visible = False
Else
' Quedan páginas a la izquierda?
If _peliculas.Peliculas.Count > 0 AndAlso _peliculas.Peliculas(0).CodBarras = CStr(ViewState(Me.ID + "_PeliculaPrimeraPagina")) Then
izquierda.Visible = False
derecha.Visible = True
PrimerOrdinal = 1
Else
izquierda.Visible = True
End If
End If
If _peliculas.Peliculas.Count > 0 Then
Viewstate(Me.ID + "_PrimerCodBarras") = _peliculas.Peliculas(0).CodBarras
Viewstate(Me.ID + "_PrimerTitulo") = _peliculas.Peliculas(0).Titulo
End If
' Creamos DataSet artificial para la lista de dos columnas
dt = dsPeliculas.Tables.Add("Peliculas")
dt.Columns.Add("Titulo0", GetType(String))
dt.Columns.Add("Sinopsis0", GetType(String))
dt.Columns.Add("CodBarras0", GetType(String))
dt.Columns.Add("Titulo1", GetType(String))
dt.Columns.Add("Sinopsis1", GetType(String))
dt.Columns.Add("CodBarras1", GetType(String))
dt.Columns.Add("Ordinal", GetType(Integer))
If _peliculas.Peliculas.Count > 0 Then
For i = _comenzarEn To _peliculas.Peliculas.Count - 1 Step 2
Dim row(6) As Object
row(0) = _peliculas.Peliculas(i).Titulo
row(1) = _peliculas.Peliculas(i).Sinopsis
row(2) = _peliculas.Peliculas(i).CodBarras
If (i + 1 < _peliculas.Peliculas.Count) Then
row(3) = _peliculas.Peliculas(i + 1).Titulo
row(4) = _peliculas.Peliculas(i + 1).Sinopsis
row(5) = _peliculas.Peliculas(i + 1).CodBarras
End If
row(6) = i + PrimerOrdinal
dt.Rows.Add(row)
Next i
Repeater1.DataSource = dsPeliculas
End If
End Sub
End Class
Public Delegate Sub PaginaEventHandler(ByVal sender As Object, ByVal e As ListaPeliculasEventArgs)
Public Class ListaPeliculasEventArgs
Inherits EventArgs
Private _ultimaPelicula As String
Private _ultimoCodBarras As String
Private _numRegistros As Integer
Public Sub New(ByVal ultimaPelicula As String, ByVal ultimoCodBarras As String, ByVal numRegistros As Integer)
_ultimaPelicula = ultimaPelicula
_ultimoCodBarras = ultimoCodBarras
_numRegistros = numRegistros
End Sub
Public ReadOnly Property UltimaPelicula()
Get
Return _ultimaPelicula
End Get
End Property
Public ReadOnly Property UltimoCodBarras()
Get
Return _ultimoCodBarras
End Get
End Property
Public ReadOnly Property NumRegistros()
Get
Return _numRegistros
End Get
End Property
End Class
Por ejemplo, en la línea
[For i = _comenzarEn To _peliculas.Peliculas.Count - 1 Step 2]
no sé a que se refiere el integer _comenzarEn, si empieza desde cero ó que...
Y tampoco sé a que se refiere .Peliculas, si es un DataSet ó que. Y si lo es, en este documento no veo que esté definido por ningún lado, creo yo; ¿igual lo está en otro al que está vinculado?, no sé...
También me ha dado fallos en las líneas:
dt.Columns.Add("Titulo0", GetType(String)) en la parte GetType... que no acepta...
Bueno, no sé eso es lo que tengo y que no me funciona al quererlo pasar a C#.
A ver si alguien sabe e indica cómo hacerlo para C#...