Custom gridview with custom pagerTemplate

giovedì 08 febbraio 2007 - 21.56

kueza Profilo | Newbie

Ciao a tutti,

Ho il seguente problema:

Passi
1) Ho esteso un gridView
2) Ho creato un classe PagerTemplate che implementa l'interfacciaITemplate
3) Ho creato un Evento ChangePagesizeEventArgs che esten ....

Ho associato il pagertemplate alla gridview durante l'evento init, intercetto l'evento di changePageSize tramite la sub m_PagerTemplate_changedPageSize e cambio il pagesize al grid in questa maniera la grid cambia visualizzando più o meno record ma il valore della combo non mantiene il suo stato viene reimpostato alla prima posizione, praticamente cosa succede, viene chiamato una seconda volta il metodo instancein del pager template.
La soluzione che ho trovato e salvarmi il valore nel viewstate clientid del grid + la chiave e nel metodo instancein rileggere il valore, ma sono sicuro di essermi perso qualche cosa... qualcuna sa darmi una soluzione più brillante spero di essermi spiegato bene.

Public Class gridPager : Inherits GridView

Private WithEvents m_PagerTemplate As PagerTemplate

Private Sub gridPager_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
m_PagerTemplate = New PagerTemplate
Me.PagerTemplate = m_PagerTemplate
End Sub

Private Sub m_PagerTemplate_changedPageSize(ByVal sender As Object, ByVal e As ChangedPageSizeEventArgs) Handles m_PagerTemplate.changedPageSize
Me.PageSize = e.PageSize
End Sub
End Class


Public Class PagerTemplate : Implements System.Web.UI.ITemplate

Private WithEvents m_Combo As DropDownList

Public Delegate Sub onChangedPageSize(ByVal sender As Object, ByVal e As ChangedPageSizeEventArgs)
Public Event changedPageSize As onChangedPageSize

Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) Implements System.Web.UI.ITemplate.InstantiateIn

m_Combo = New DropDownList

m_Combo.Items.Add(New ListItem("1", "1"))
m_Combo.Items.Add(New ListItem("2", "2"))
m_Combo.Items.Add(New ListItem("10", "10"))
m_Combo.AutoPostBack = True
container.Controls.Add(m_Combo)


End Sub

Private Sub m_Combo_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles m_Combo.SelectedIndexChanged
RaiseEvent changedPageSize(sender, New ChangedPageSizeEventArgs(CInt(m_Combo.SelectedValue)))
End Sub
End Class


Public Class ChangedPageSizeEventArgs : Inherits EventArgs

Private m_PageSize As Integer
Public Property PageSize() As Integer
Get
Return m_PageSize
End Get
Set(ByVal value As Integer)
m_PageSize = value
End Set
End Property

Public Sub New(ByVal pageSize As Integer)
Me.m_PageSize = pageSize
End Sub

End Class

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5