J'ai commencé un peu à faire du code
donc j'ai prefere dérive un checkboxlist, car ce qu'on va faire c'est un controle similaire, et comme ca il herite de toutes les posssibilités.
J'ai finit une grande partie du travail, c'est plutot rapide, il me reste plus qu'a gerer les changements de page donc un peu de javascript, mais pour l'instant ca m'a pris que 10 min donc ca risque de me prendre en tout 1H (plus facile que ce que je croyais)
voici le code, bien sur il est pas commenté :'( mais une fois finis je le deposerais en source ici et il sera commenté et inclu dans ma dll :p
donc voici le controle en question j'ai rajouté deux propriétés qui ont le meme nom que ceux du datagrid pour la gestion des pages (le hasard fait bien les choses

) sinon j'ai un peu modifié la methode render, c'est pas tres facile au debut si on ne connais pas ce genre de programmation, mais sinon ca reste assez simple donc voici :
Namespace Cyril.Web.Controls
Public Class CheckBoxList Inherits System.Web.UI.WebControls.CheckBoxList
Private _PageSize As Integer = 5 Public Property PageSize() As Integer Get Return _PageSize End Get Set(ByVal Value As Integer) Value = _PageSize End Set End Property
Private _AllowPaging As Boolean Public Property AllowPaging() As Boolean Get Return _AllowPaging End Get Set(ByVal Value As Boolean) _AllowPaging = Value End Set End Property
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
If _AllowPaging And Me.Items.Count > _PageSize Then
Dim ControlPaging As New Table
Dim Row As New TableRow
For i As Integer = 1 To Me.Items.Count / _PageSize - 1 Dim Cell As New TableCell
Cell.Text = i.ToString Row.Cells.Add(Cell) Next
ControlPaging.Rows.Add(Row)
Dim Page As Integer = 1 Dim array() As String
Dim lc As New ListItemCollection
For i As Integer = Page * _PageSize To (Page + 1) * _PageSize - 1 lc.Add(Me.Items(i)) Next
Me.Items.Clear() For i As Integer = 1 To _PageSize - 1 Me.Items.Add(lc(i)) Next
MyBase.Render(writer)
ControlPaging.RenderControl(writer)
Else
MyBase.Render(writer)
End If
End Sub End Class
|
pour s'en servir suffit de rajouter ca dans le aspx
<%@ Register TagPrefix="cyril" Namespace="Cyril.Web.Controls" Assembly="Cyril" %>
<cyril:checkboxlist AllowPaging="True" id=CheckBoxList1 runat="server"/>
et dans le code ajouté des donnés :
For i As Integer = 1 To 20
CheckBoxList1.Items.Add(i)
Next
pour l'instant je pense ca marche assez bien :p je te conseil de continuer avec cet exemple si t'y comprend qqchose car ca te permet de faire du code propre et reutilisable ...
bon courage
Cyril (Alias Jesusonline)