Atteindre un controle dans un gridview généré en code behind
cs_Fanny04
Messages postés14Date d'inscriptionlundi 10 septembre 2007StatutMembreDernière intervention 4 septembre 2008
-
3 sept. 2008 à 16:15
cs_Fanny04
Messages postés14Date d'inscriptionlundi 10 septembre 2007StatutMembreDernière intervention 4 septembre 2008
-
4 sept. 2008 à 17:25
Bonjour,
Je suis dans une impasse... Je crée un gridview en code behind et j'y ajoute deux colonnes pour chaque ligne une avec une radiobuttonlist et une textbox. (toujours en code behind)
Par la suite j'aimerais récupérer pour chaque ligne les valeurs de ces contrôles.
Public Class GridViewTemplate
Implements ITemplate
Private templateType As DataControlRowType
Private columnName As String
Sub New(ByVal type As DataControlRowType, ByVal colname As String)
templateType = type
columnName = colname
End Sub
Sub InstantiateIn(ByVal container As System.Web.UI.Control) _
Implements ITemplate.InstantiateIn
Select Case templateType
Case DataControlRowType.Header
Dim lc As New Literal
lc.Text = " " & columnName & " "
container.Controls.Add(lc)
Case DataControlRowType.DataRow
Dim tb As New TextBox
container.Controls.Add(tb)
End Select
End Sub
End Class
Puis, quand tu crées ton gridview, tu peux écrire :
Dim customField As New TemplateField
customField.ItemTemplate = New GridViewTemplate(DataControlRowType.DataRow, "TextBox")
customField.HeaderTemplate = New GridViewTemplate(DataControlRowType.Header, "TextBox")
gd2.Columns.Add(customField)
(ou gd2 est ton gridview)
Ensuite, pour récupérer tes données, tu peux faire :
For Each ligne As GridViewRow In gd2.Rows
tb2 = CType((ligne.Cells(0).Controls(0)), TextBox)
...
Next
cs_Fanny04
Messages postés14Date d'inscriptionlundi 10 septembre 2007StatutMembreDernière intervention 4 septembre 2008 4 sept. 2008 à 12:05
Je vais mettre le code que je génère...
Car j'ai essayé avec ce que tu m'as donné précédemment j'ai aussi créer la classe complète mais cela ne marche pas, mes données ne sont pas importé.
J'ai une autre solution mais celle ci ne me laisse pas accéder au colonne que j'ai créée.
'* en tˆte
Dim mRowHead
As
New TableRow()
Dim mCellHeader
As
New TableHeaderCell()
Dim mCell
As TableCelliCount = pGridView.Rows.Count
Le problème avec ca c'est qu'il ne me compte pas les dernière colonne!!
J'aliment au préalable le gridview avec :
pGridView.DataSource = CreateSource.CreateDataSource_Inv(Translation_field(sSelect), sSelect)
pGridView.DataBind()
Merci de m'aider c'est vraiment très gentil!!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 4 sept. 2008 à 13:25
Bonjour,
Peut-être que je ne comprends pas bien ce que tu fais.
Je laisse de côté le radiobutton parce que je ne sais pas ce que fait Initialise_RadioButtonList.
Pour le textbox, tu mets un id en lui ajoutant le nombre i.
Mais si tu écris seulement :
txt_Inv_Manager.ID = "txt_Inv_Manager"
(je veux dire sans ajouter i, qui ne sert à rien puisque l'id de chaque textbox va être défini et différencié en fonction de sa position dans le gridview)
tu dois pouvoir récupérer txt_Inv_Manager pour chaque ligne avec :
Dim tb2 As TextBox
For Each ligne As GridViewRow In pGridView.Rows
tb2 = CType(ligne.FindControl("txt_Inv_Manager"), TextBox)
...
Next
cs_Fanny04
Messages postés14Date d'inscriptionlundi 10 septembre 2007StatutMembreDernière intervention 4 septembre 2008 4 sept. 2008 à 13:29
Salut,
Si si je rajoute le i mais il passe à la ligne du dessous. Mais admettons que je n'en ait pas besoin.
Le hic c'est que lors de l'interrogation comme tu l'as fait à la fin il ne reconnait pas les 2 dernières colonnes. c'est à dire : il m'en affiche 5 mais dans le code behind n'en compte que 3!
cs_Fanny04
Messages postés14Date d'inscriptionlundi 10 septembre 2007StatutMembreDernière intervention 4 septembre 2008 4 sept. 2008 à 15:22
Bon j'ai utiliser la méthode de création d'une classe vb pour gridviewtemplates!
Mais je suis confronter au problème suivant : je n'arrive pas à accéder au txt!!
Voilà le code :
Dim cnn
As
New System.Data.SqlClient.SqlConnection(ReadData.Inv_ConnectionString)
Dim myDataset
As
New Data.DataSet
Dim myDataset2
As
New Data.DataSet
Dim MyTable
As Data.DataTable =
New Data.DataTable
Dim MyDatarow
As Data.DataRow
Dim sSelect
As
String =
"SELECT GIDUser, UserName, UserCompagnie, UserService " & _
"FROM tbl_2008_Manager_User " & _
"WHERE ManagerGID = 'Z001MSFD' AND (Statut IS NULL) " & _
"GROUP BY GIDUser, UserName, UserCompagnie, UserService, Statut, ComChef"
Dim dtr
As
New Data.SqlClient.SqlDataAdapter(sSelect, cnn)
Dim dtrCategory
As
New Data.SqlClient.SqlDataAdapter(
"SELECT StatutID, StatutInv_" & Session(
"Lg") &
" AS Statut FROM tbl_StatutInv", cnn)dtr.Fill(myDataset)
dtrCategory.Fill(myDataset2)
Dim dcol
As Data.DataColumn =
New Data.DataColumn(
"UserService",
GetType(System.String))MyTable.Columns.Add(dcol)
dcol =
New Data.DataColumn(
"GIDUser",
GetType(System.String))MyTable.Columns.Add(dcol)
dcol =
New Data.DataColumn(
"UserName",
GetType(System.String))MyTable.Columns.Add(dcol)
dcol =
New Data.DataColumn(
"UserCompagnie",
GetType(System.String))MyTable.Columns.Add(dcol)
dcol =
New Data.DataColumn(
"Statut",
GetType(System.String))MyTable.Columns.Add(dcol)
dcol =
New Data.DataColumn(
"ChefCom",
GetType(System.String))MyTable.Columns.Add(dcol)
cs_Fanny04
Messages postés14Date d'inscriptionlundi 10 septembre 2007StatutMembreDernière intervention 4 septembre 2008 4 sept. 2008 à 15:22
Bon j'ai utiliser la méthode de création d'une classe vb pour gridviewtemplates!
Mais je suis confronter au problème suivant : je n'arrive pas à accéder au txt!!
Voilà le code :
Dim cnn
As
New System.Data.SqlClient.SqlConnection(ReadData.Inv_ConnectionString)
Dim myDataset
As
New Data.DataSet
Dim myDataset2
As
New Data.DataSet
Dim MyTable
As Data.DataTable =
New Data.DataTable
Dim MyDatarow
As Data.DataRow
Dim sSelect
As
String =
"SELECT GIDUser, UserName, UserCompagnie, UserService " & _
"FROM tbl_2008_Manager_User " & _
"WHERE ManagerGID = 'Z001MSFD' AND (Statut IS NULL) " & _
"GROUP BY GIDUser, UserName, UserCompagnie, UserService, Statut, ComChef"
Dim dtr
As
New Data.SqlClient.SqlDataAdapter(sSelect, cnn)
Dim dtrCategory
As
New Data.SqlClient.SqlDataAdapter(
"SELECT StatutID, StatutInv_" & Session(
"Lg") &
" AS Statut FROM tbl_StatutInv", cnn)dtr.Fill(myDataset)
dtrCategory.Fill(myDataset2)
Dim dcol
As Data.DataColumn =
New Data.DataColumn(
"UserService",
GetType(System.String))MyTable.Columns.Add(dcol)
dcol =
New Data.DataColumn(
"GIDUser",
GetType(System.String))MyTable.Columns.Add(dcol)
dcol =
New Data.DataColumn(
"UserName",
GetType(System.String))MyTable.Columns.Add(dcol)
dcol =
New Data.DataColumn(
"UserCompagnie",
GetType(System.String))MyTable.Columns.Add(dcol)
dcol =
New Data.DataColumn(
"Statut",
GetType(System.String))MyTable.Columns.Add(dcol)
dcol =
New Data.DataColumn(
"ChefCom",
GetType(System.String))MyTable.Columns.Add(dcol)
cs_Fanny04
Messages postés14Date d'inscriptionlundi 10 septembre 2007StatutMembreDernière intervention 4 septembre 2008 4 sept. 2008 à 15:22
Bon j'ai utiliser la méthode de création d'une classe vb pour gridviewtemplates!
Mais je suis confronter au problème suivant : je n'arrive pas à accéder au txt!!
Voilà le code :
Dim cnn
As
New System.Data.SqlClient.SqlConnection(ReadData.Inv_ConnectionString)
Dim myDataset
As
New Data.DataSet
Dim myDataset2
As
New Data.DataSet
Dim MyTable
As Data.DataTable =
New Data.DataTable
Dim MyDatarow
As Data.DataRow
Dim sSelect
As
String =
"SELECT GIDUser, UserName, UserCompagnie, UserService " & _
"FROM tbl_2008_Manager_User " & _
"WHERE ManagerGID = 'Z001MSFD' AND (Statut IS NULL) " & _
"GROUP BY GIDUser, UserName, UserCompagnie, UserService, Statut, ComChef"
Dim dtr
As
New Data.SqlClient.SqlDataAdapter(sSelect, cnn)
Dim dtrCategory
As
New Data.SqlClient.SqlDataAdapter(
"SELECT StatutID, StatutInv_" & Session(
"Lg") &
" AS Statut FROM tbl_StatutInv", cnn)dtr.Fill(myDataset)
dtrCategory.Fill(myDataset2)
Dim dcol
As Data.DataColumn =
New Data.DataColumn(
"UserService",
GetType(System.String))MyTable.Columns.Add(dcol)
dcol =
New Data.DataColumn(
"GIDUser",
GetType(System.String))MyTable.Columns.Add(dcol)
dcol =
New Data.DataColumn(
"UserName",
GetType(System.String))MyTable.Columns.Add(dcol)
dcol =
New Data.DataColumn(
"UserCompagnie",
GetType(System.String))MyTable.Columns.Add(dcol)
dcol =
New Data.DataColumn(
"Statut",
GetType(System.String))MyTable.Columns.Add(dcol)
dcol =
New Data.DataColumn(
"ChefCom",
GetType(System.String))MyTable.Columns.Add(dcol)
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 4 sept. 2008 à 16:06
rebonjour,
(petit problème de post apparemment : ton message apparaît trois fois)
Comme ça, je ne vois pas trop. Tu recherches tes contrôles sur quel événement ?
Peux-tu montrer aussi comment tu as créé l'id de ces contrôles dans ta classe ?
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 4 sept. 2008 à 17:22
Bon, l'id n'est pas en cause apparemment.
Si ta gridview s'affiche correctement au départ, le plus probable me semble être que tu ne recherches pas tes contrôles lors du bon événement. Mais c'est sans garantie.
Lors de quel événement recherches-tu ton contrôle textbox et radiobutton ? Et que comptes-tu faire à ce moment là ?