OVH Cloud OVH Cloud

.NET 2 > gridview/ObjectDataSource

1 réponse
Avatar
syl
Hello


J'essaie de faire un control gridview facile a utiliser avec plein de tri,
de filtres (dropdownlist dans les headers)..et plein d'autre trucs!
j'utilise aujourdhui un objectdatasource ODS pour faire tout ca car tout est
gerer quasi automatiquement....mais l'ODS est toujours aujourdhui sur la
page ou dans le webcontrol a coté de la gridview.....
je voudrais que ces deux objets soit reunis dans un seul......

donc, dans ma grille perso qui herite de la gridview du framework, j'ai créé
un ODS en variable privée que je rajoute dans la gridview (Me.control.add)
lors du onload ou onprerender
je fais aussi un Me.DataSourceID = _ods.ID...et la, c'est le drame....
A chaque fois, j'ai toujours la meme erreur
Le DataSourceID de "MyGridView" doit être l'ID d'un contrôle de type
IDataSource. Un contrôle doté de l'ID "_ods" est introuvable

Des idées????
Vous savez pourquoi ca me fais ca?

en tout cas, merci d'avance!!!!!

Bye
Syl

PS :
mon code ressemble a ca :

-------------my grid view-------------------------
Public Class GridView
Inherits Common.Web.UI.WebControls.GridView

Private WithEvents _ods As ObjectDatasource

Public ReadOnly Property odsDataSource() As ObjectDatasource
Get
If _ods Is Nothing Then
_ods = New ObjectDatasource
_ods.ID = "_ods"
_ods.EnableViewState = False
End If
Return _ods
End Get
End Property

Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
MyBase.OnLoad(e)
Me.Controls.Add(_ods)
Me.DataSourceID = _ods.ID
End Sub

.....et plein d'autres trucs avec des OnRowCreated, OnPreRender, and much
more.....!!!....

End Class


---------------utilisation de ma gridview perso dans un
webcontrol-------------------

Partial Class webControls_ThingList
Inherits System.Web.UI.UserControl

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
'GV est ma gridview perso dans le control utilisateur perso
aussi ThingList
GV.odsDataSource.TypeName = "un_super_type_de_donnees"
GV.odsDataSource.SelectMethod =
"une_super_fonction_pour_data_source"
End Sub

End Class

1 réponse

Avatar
syl
Hi!

Probleme résolu!


en fait, faut pas que j'ajoute l'ODS directement dans ma gridview, mais il
faut que je l'insère dans l'ASCX ou l'ASPX qui contient ma gridview...

en gros, j'ai créé une fonction d'init qui doit etre executée a chaque
utilisation de ma super gridview et qui fait le controls.add et le
datasourceid = ods.id
cette fonction sera appellé sur l'ascx ou l'aspx....
je ne peux pas faire ca a l'interieur du gridview.....je ne sais pas
pourquoi...mais c'est pas grave

Public Sub InitObjectDataSource(ByVal Container As
System.Web.UI.Control)
Container.Controls.Add(_ods)
Me.DataSourceID = _ods.ID
End Sub


bye!
syl


"syl" a écrit dans le message de news:

Hello


J'essaie de faire un control gridview facile a utiliser avec plein de tri,
de filtres (dropdownlist dans les headers)..et plein d'autre trucs!
j'utilise aujourdhui un objectdatasource ODS pour faire tout ca car tout
est gerer quasi automatiquement....mais l'ODS est toujours aujourdhui sur
la page ou dans le webcontrol a coté de la gridview.....
je voudrais que ces deux objets soit reunis dans un seul......

donc, dans ma grille perso qui herite de la gridview du framework, j'ai
créé un ODS en variable privée que je rajoute dans la gridview
(Me.control.add) lors du onload ou onprerender
je fais aussi un Me.DataSourceID = _ods.ID...et la, c'est le drame....
A chaque fois, j'ai toujours la meme erreur
Le DataSourceID de "MyGridView" doit être l'ID d'un contrôle de type
IDataSource. Un contrôle doté de l'ID "_ods" est introuvable

Des idées????
Vous savez pourquoi ca me fais ca?

en tout cas, merci d'avance!!!!!

Bye
Syl

PS :
mon code ressemble a ca :

-------------my grid view-------------------------
Public Class GridView
Inherits Common.Web.UI.WebControls.GridView

Private WithEvents _ods As ObjectDatasource

Public ReadOnly Property odsDataSource() As ObjectDatasource
Get
If _ods Is Nothing Then
_ods = New ObjectDatasource
_ods.ID = "_ods"
_ods.EnableViewState = False
End If
Return _ods
End Get
End Property

Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
MyBase.OnLoad(e)
Me.Controls.Add(_ods)
Me.DataSourceID = _ods.ID
End Sub

.....et plein d'autres trucs avec des OnRowCreated, OnPreRender, and much
more.....!!!....

End Class


---------------utilisation de ma gridview perso dans un
webcontrol-------------------

Partial Class webControls_ThingList
Inherits System.Web.UI.UserControl

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
'GV est ma gridview perso dans le control utilisateur perso
aussi ThingList
GV.odsDataSource.TypeName = "un_super_type_de_donnees"
GV.odsDataSource.SelectMethod =
"une_super_fonction_pour_data_source"
End Sub

End Class