Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

DataGrid en édition et ListBox

5 réponses
Avatar
JL
Bonjour,

J'ai un DataGrid dont la source de données peut changer et je ne peux donc
pas
connaître le nombre de colonnes : j'ai donc activé la propriété qui permet
de générer
les colonnes à l'exécution.

Lorsque je passe en mode édition, je voudrais que certains champs ne soient
pas des
TextBox mais des ListBox.

Ce que j'ai fait pour l'instant, dans le ItemDataBound, je cache la TextBox
et ajoute
un contrôle ListBox... Le soucis est qu'au moment de la validation des
modifications
(UpdateCommand), je n'ai pas accès au contrôle ListBox que j'ai ajouté
auparavant.

Any Idea ????

Merci !
A+

JL*

------------------------------------------------------------------------------------------



REM -----------------------------------------------------------------------------
REM --- DataBind_SuiviEpreuves
REM -----------------------------------------------------------------------------
REM --- MAJ de la source du DataGrid des Epreuves
REM -----------------------------------------------------------------------------

Private Sub DataBind_SuiviEpreuves(ByVal str_ChampTri As String)


(...)

REM -----------------------------------------------------------------------------
REM --- Création du DataAdapter

(...)

REM -----------------------------------------------------------------------------
REM --- Tri du DataSet dans un DataView

(...)

REM -----------------------------------------------------------------------------


End Sub






Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
DataBind_SuiviEpreuves("Etudiant")

End If
End Sub





REM -----------------------------------------------------------------------------
REM --- LST_EPREUVES_ItemDataBound
REM -----------------------------------------------------------------------------
REM --- Formattage de l'affichage du DataGrid
REM -----------------------------------------------------------------------------

Private Sub LST_EPREUVES_ItemDataBound(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.DataGridItemEventArgs) Handles
LST_EPREUVES.ItemDataBound

(...)

REM -----------------------------------------------------------------------------

If boo_ModeEdition Then

If e.Item.ItemIndex = LST_EPREUVES.EditItemIndex Then

REM --- Vérouillage du Nom de l'Etudiant
For Each ctr_AVerouiller As Control In e.Item.Cells(1).Controls
CType(ctr_AVerouiller, TextBox).Enabled = False
Next


REM --- Mise en place des listes pour l'état des épreuves

For int_Index = 2 To e.Item.Cells.Count - 1

REM --- Création de la liste
ctr_ListeEtatEpreuve = New DropDownList

ctr_ListeEtatEpreuve.Items.Add(New ListItem("Faite", "1"))
ctr_ListeEtatEpreuve.Items.Add(New ListItem("Non faite", "2"))

REM --- Parcours des cellules du DataGrid
For Each ctr_AMasquer As TextBox In
e.Item.Cells(int_Index).Controls

DecrypterContenuCellule(CType(ctr_AMasquer, TextBox).Text, _
str_EtatEpreuve, _
str_CleEpreuve, _
str_CleEtudiant, _
str_TypeEpreuve)

REM --- On masque le champ d'édition par défaut
ctr_AMasquer.Visible = False
ctr_AMasquer.ID = "AFF_EPR" & str_CleEpreuve

REM --- On définit la valeur de la liste

If str_EtatEpreuve = "OK" Then
ctr_ListeEtatEpreuve.Items.FindByValue("1").Selected = True
Else
ctr_ListeEtatEpreuve.Items.FindByValue("2").Selected = True
End If

REM --- On vérouille les listes non modifiables (cad si EPR_TYP
<> 1)
If str_TypeEpreuve <> 1 Then
ctr_ListeEtatEpreuve.Enabled = False
End If

Next

REM --- On ajoute la liste
ctr_ListeEtatEpreuve.ID = "LST_ETAT" & str_CleEpreuve
e.Item.Cells(int_Index).Controls.AddAt(1, ctr_ListeEtatEpreuve)

Next int_Index

End If

End If

(...)

End Sub




REM -----------------------------------------------------------------------------
REM --- LST_EPREUVES_EditCommand
REM -----------------------------------------------------------------------------
REM --- Gestion de la MAJ des infos du DataGrid
REM -----------------------------------------------------------------------------

Private Sub LST_EPREUVES_EditCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs) Handles
LST_EPREUVES.EditCommand

boo_ModeEdition = True
LST_EPREUVES.EditItemIndex = e.Item.ItemIndex
DataBind_SuiviEpreuves("Etudiant")

End Sub

REM -----------------------------------------------------------------------------
REM --- LST_EPREUVES_UpdateCommand
REM -----------------------------------------------------------------------------
REM --- Validation de la modification d'état
REM -----------------------------------------------------------------------------

Private Sub LST_EPREUVES_UpdateCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs) Handles
LST_EPREUVES.UpdateCommand


<<------- LA JE NE RETROUVE QU UN SEUL CONTROL : LA TEXTBOX (ET PAS LA
LISTBOX AJOUTEE) ---------->>


REM --- On désactive le mode édition

LST_EPREUVES.EditItemIndex = -1
boo_ModeEdition = False

REM --- On met à jour le DataGrid avec les nouvelles Infos

DataBind_SuiviEpreuves("Etudiant")


End Sub


End Class

5 réponses

Avatar
Zazar
Bonsoir,

J'ai un DataGrid dont la source de données peut changer et je ne peux donc
pas
connaître le nombre de colonnes : j'ai donc activé la propriété qui permet
de générer
les colonnes à l'exécution.

Lorsque je passe en mode édition, je voudrais que certains champs ne


soient
pas des
TextBox mais des ListBox.

Ce que j'ai fait pour l'instant, dans le ItemDataBound, je cache la


TextBox
et ajoute
un contrôle ListBox... Le soucis est qu'au moment de la validation des
modifications
(UpdateCommand), je n'ai pas accès au contrôle ListBox que j'ai ajouté
auparavant.

Any Idea ????



Vérifiez si un DataBind() n'est pas effectué avec boo_ModeEdition = false
avant l'update. (Un point d'arrêt dans votre méthode DataBind_SuiviEpreuves
devrait faire l'affaire).

--
Zazar
Avatar
Lemon
Ok, merci beaucoup Zazar ! C'est très sympa :)))
J'regarderai ca des lundi matin !!!

A+
JL


----- Original Message -----
From: "Zazar"
Newsgroups: microsoft.public.fr.dotnet.aspnet
Sent: Friday, October 01, 2004 7:53 PM
Subject: Re: DataGrid en édition et ListBox

Vérifiez si un DataBind() n'est pas effectué avec boo_ModeEdition = false
avant l'update. (Un point d'arrêt dans votre méthode
DataBind_SuiviEpreuves
devrait faire l'affaire).

--
Zazar


Avatar
JL
"Zazar" a écrit dans le message
de news: OmqgtA%

Vérifiez si un DataBind() n'est pas effectué avec boo_ModeEdition = false
avant l'update. (Un point d'arrêt dans votre méthode
DataBind_SuiviEpreuves
devrait faire l'affaire).

--
Zazar



Malheureusement, ce n'est pas ca... en mettant un point d'arret des le debut
du Page_Load,
j'ai toujours le meme problème : il n'arrive pas à trouver la DropDownList
:(('(

A l'aide SVP !!!!
Avatar
Zazar
Bonjour,

Malheureusement, ce n'est pas ca... en mettant un point d'arret des le


debut
du Page_Load,
j'ai toujours le meme problème : il n'arrive pas à trouver la DropDownList
:(('(



Et au tout début du page_load, le datagrid contient-il les dropdownlist ?

--
Zazar
Avatar
JL
"Zazar" a écrit dans le message
de news:

Et au tout début du page_load, le datagrid contient-il les dropdownlist ?

--
Zazar



Si retrace toute l'opération :

- L'utilisateur clique sur le bouton du DataGrid pour entrer em mode edition
> Appel de EditCommand
> Appel de DataBind_SuiviEpreuves
> Appel de ItemDataBound : ajout de la liste déroulante
(DropDownList) -> liste accessible
> Retour sur DataBind_SuiviEpreuves -> liste accessible
> Retour dans le EditCommand -> liste accessible

- L'utilisateur fait ses mises à jour et valide
> Entrée dans le Page_Load -> liste non accessible :((


Cela fait deux jours que je suis sur cette erreur et je ne vois vraiment pas
d'ou cela peut venir...
J'n'ai peut etre pas pris la bonne methode ??

Merci
A+

JL