Bonjour,
quand je fait update(enregistrer) dans un datagrid avec des templatescolumn creer dynamiquement, findcontrol ne trouve pas mon mon id du textbox .... je crois que mon problème est à la création de mes templatecolumns mais je ne vois pas où est le problème.
Au secours !!! :)
Merci d'avance
Voici mon code au complet ....
Imports
LibraryOracleImports
LibraryMessagePublic
Class GererParamTraitementInherits System.Web.UI.PageDim oracleLocal As OracleODP#
Region " Web Form Designer Generated Code "'This call is required by the Web Form Designer.<System.Diagnostics.DebuggerStepThrough()>
PrivateSub InitializeComponent()EndSubProtectedWithEvents LabTitre As System.Web.UI.WebControls.LabelProtectedWithEvents DataGridTable As System.Web.UI.WebControls.DataGridProtectedWithEvents DropListTable As System.Web.UI.WebControls.DropDownListProtectedWithEvents LabJavascript As System.Web.UI.WebControls.LabelProtectedWithEvents LinkButton1 As System.Web.UI.WebControls.LinkButtonProtectedWithEvents TextBox1 As System.Web.UI.WebControls.TextBoxProtectedWithEvents Hidden1 As System.Web.UI.HtmlControls.HtmlInputHiddenProtectedWithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid'NOTE: The following placeholder declaration is required by the Web Form Designer.'Do not delete or move it.Private designerPlaceholderDeclaration As System.ObjectPrivateSub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Init'CODEGEN: This method call is required by the Web Form Designer'Do not modify it using the code editor.InitializeComponent()
EndSub#
EndRegionPrivateSub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.LoadoracleLocal = Session("oracle")
IfNot Page.IsPostBack Then'Charger la liste des noms de table avec web.configEndIfEndSubPrivateSub SelectionTable()Dim Selection AsIntegerSelection =
Me.DropListTable.SelectedIndexIf Selection > 0 ThenAfficherTableau()
EndIfEndSubPrivateSub AfficherTableau()Dim NomTable AsStringDim TxtSql AsStringNomTable =
Me.DropListTable.SelectedValueDim DonneeTable As DataSetDonneeTable = oracleLocal.LancerRequeteLecture("select * from " & ConfigurationSettings.AppSettings("schema") & NomTable, "DonneeTable")
Me.DataGridTable.DataSource = DonneeTableForEach dtColumn As DataColumn In DonneeTable.Tables(0).ColumnsDim tc1 As TemplateColumnMe.DataGridTable.Columns.Add(CreateTemplateColumn(dtColumn.ColumnName, dtColumn.ColumnName))NextMe.DataGridTable.DataBind()EndSubClass myLabelColumnImplements ITemplateDim _Champ AsStringPublicProperty Champ() AsStringGetChamp = _Champ
EndGetSet(ByVal Value AsString)_Champ = Value
EndSetEndPropertySub instantiatein(ByVal container As Control) Implements ITemplate.InstantiateInDim lbl As Label = New LabelAddHandler lbl.DataBinding, AddressOf BindLabelColumncontainer.Controls.Add(lbl)
EndSubPublicSub BindLabelColumn(ByVal sender AsObject, ByVal e As EventArgs)Dim lbl As Label = CType(sender, Label)Dim container As DataGridItem = CType(lbl.NamingContainer, DataGridItem)Dim strVals AsStringlbl.Text = Convert.ToString(DataBinder.Eval((
CType(container, DataGridItem)).DataItem, _Champ))lbl.ID = "lbl" & _Champ
EndSubEndClassClass myTxtColumnImplements ITemplateDim _Champ AsStringPublicProperty Champ() AsStringGetChamp = _Champ
EndGetSet(ByVal Value AsString)_Champ = Value
EndSetEndPropertySub instantiatein(ByVal container As Control) Implements ITemplate.InstantiateInDim txt As TextBox = New TextBoxDim hiddentxt As HtmlControls.HtmlInputHidden = New HtmlControls.HtmlInputHiddenAddHandler txt.DataBinding, AddressOf BindTxtColumnAddHandler hiddentxt.DataBinding, AddressOf BindHiddenColumncontainer.Controls.Add(txt)
container.Controls.Add(hiddentxt)
EndSubPublicSub BindTxtColumn(ByVal sender AsObject, ByVal e As EventArgs)Dim txt As TextBox = CType(sender, TextBox)Dim container As DataGridItem = CType(txt.NamingContainer, DataGridItem)Dim strVals AsStringtxt.Text = Convert.ToString(DataBinder.Eval((
CType(container, DataGridItem)).DataItem, _Champ))txt.ID = "txt" & _Champ
EndSubPublicSub BindHiddenColumn(ByVal sender AsObject, ByVal e As EventArgs)Dim hiddentxt As HtmlControls.HtmlInputHidden = CType(sender, HtmlControls.HtmlInputHidden)Dim container As DataGridItem = CType(hiddentxt.NamingContainer, DataGridItem)Dim strVals AsStringhiddentxt.Value = Convert.ToString(DataBinder.Eval((
CType(container, DataGridItem)).DataItem, _Champ))hiddentxt.ID = "hiddentxt" & _Champ
EndSubEndClassFunction CreateTemplateColumn(ByVal DataFieldValue AsString, ByVal HeaderTextValue AsString) As TemplateColumn' Create a templateColumn.Dim tplCol AsNew TemplateColumnDim monLabel AsNew myLabelColumnDim monTxt AsNew myTxtColumnmonLabel.Champ = DataFieldValue
monTxt.Champ = DataFieldValue
tplCol.ItemTemplate = monLabel
tplCol.EditItemTemplate = monTxt
tplCol.FooterTemplate = monTxt
tplCol.HeaderText = HeaderTextValue
Return tplColEndFunctionPrivateSub DropListTable_SelectedIndexChanged(ByVal sender AsObject, ByVal e As System.EventArgs) Handles DropListTable.SelectedIndexChangedSelectionTable()
EndSubPrivateSub DataGridTable_EditCommand(ByVal source AsObject, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGridTable.EditCommandMe.DataGridTable.EditItemIndex = e.Item.ItemIndexAfficherTableau()
EndSubPrivateSub DataGridTable_UpdateCommand(ByVal source AsObject, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGridTable.UpdateCommandDim NomTable AsStringDim TxtSql AsStringDim reponse AsStringDim test AsStringDim TxtHiddenSql AsString'Prendre les valeurs sélectionnéNomTable =
Me.DropListTable.SelectedValueDim DonneeTable As DataSetDonneeTable = oracleLocal.LancerRequeteLecture("select * from " & ConfigurationSettings.AppSettings("schema") & NomTable, "DonneeTable")
'Construire le where de la commande sqlForEach dtColumn As DataColumn In DonneeTable.Tables(0).Columnstest =
CType(DataGridTable.FindControl("hiddentxt" & dtColumn.ColumnName), HtmlControls.HtmlInputHidden).ValueTxtHiddenSql = TxtHiddenSql & dtColumn.ColumnName & " = " & "'" & test & "'" & " and "
NextTxtHiddenSql = Left(TxtHiddenSql, Len(TxtHiddenSql) - 4)
'Construire la commande sqlForEach dtColumn As DataColumn In DonneeTable.Tables(0).ColumnsTxtSql = TxtSql & dtColumn.ColumnName & " = " & "'" &
CType(e.Item.FindControl("txt" & dtColumn.ColumnName), TextBox).Text & "'" & ", "NextTxtSql = Left(TxtSql, Len(TxtSql) - 2)
'Update l'enregistrement IfNot oracleLocal.LancerRequeteMAJ("Update " & ConfigurationSettings.AppSettings("schema") & NomTable & " set " & TxtSql & " WHERE " & TxtHiddenSql) Then'Message d'erreur sur la suppresion de l'enregistrementAfficherErreur(oracleLocal.GetDerniereErreur)
EndIfMe.DataGridTable.EditItemIndex = -1AfficherTableau()
EndSubPrivateSub DataGridTable_CancelCommand(ByVal source AsObject, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGridTable.CancelCommandMe.DataGridTable.EditItemIndex = -1AfficherTableau()
EndSubPrivateSub DataGridTable_DeleteCommand(ByVal source AsObject, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGridTable.DeleteCommandDim NomTable AsStringDim TxtSql AsString'Prendre les valeurs sélectionnéNomTable =
Me.DropListTable.SelectedValueDim DonneeTable As DataSetDonneeTable = oracleLocal.LancerRequeteLecture("select * from " & ConfigurationSettings.AppSettings("schema") & NomTable, "DonneeTable")
'Construire la commande sqlForEach dtColumn As DataColumn In DonneeTable.Tables(0).ColumnsTxtSql = TxtSql & dtColumn.ColumnName & " = " & "'" &
CType(e.Item.FindControl("lbl" & dtColumn.ColumnName), Label).Text & "'" & " and "NextTxtSql = Left(TxtSql, Len(TxtSql) - 4)
'Delete de la table IfNot oracleLocal.LancerRequeteMAJ("DELETE FROM " & ConfigurationSettings.AppSettings("schema") & NomTable & " WHERE " & TxtSql) Then'Message d'erreur sur la suppresion de l'enregistrementAfficherErreur(oracleLocal.GetDerniereErreur)
EndIfMe.DataGridTable.EditItemIndex = -1AfficherTableau()
EndSubPrivateSub AfficherErreur(ByVal Message AsString)Response.Write(Message)
EndSubPrivateSub DataGridTable_ItemCommand(ByVal source AsObject, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGridTable.ItemCommandIf e.CommandName = "Add" ThenResponse.Write("Ajout")
Dim DonneeTable As DataSetDim NomTable AsStringDim TxtSql AsString'Prendre les valeurs sélectionnéNomTable =
Me.DropListTable.SelectedValueDonneeTable = oracleLocal.LancerRequeteLecture("select * from " & ConfigurationSettings.AppSettings("schema") & NomTable, "DonneeTable")
'Construire la commande sqlForEach dtColumn As DataColumn In DonneeTable.Tables(0).ColumnsTxtSql = TxtSql & " ( " & dtColumn.ColumnName & ", "
NextTxtSql = Left(TxtSql, Len(TxtSql) - 2)
TxtSql = TxtSql & ") "
ForEach dtColumn As DataColumn In DonneeTable.Tables(0).ColumnsTxtSql = TxtSql & "Values ( " &
CType(e.Item.FindControl("txt" & dtColumn.ColumnName), TextBox).Text & ","NextTxtSql = Left(TxtSql, Len(TxtSql) - 2)
TxtSql = TxtSql & ") "
'Ajout dans la table IfNot oracleLocal.LancerRequeteMAJ("Insert into" & NomTable & TxtSql) Then'Message d'erreur sur l'ajout de l'enregistrementAfficherErreur(oracleLocal.GetDerniereErreur)
EndIfMe.DataGridTable.EditItemIndex = e.Item.ItemIndexAfficherTableau()
EndIfEndSub
PrivateSub DataGridTable_ItemCreated(ByVal sender AsObject, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGridTable.ItemCreatedTryDim btn As Button = CType(e.Item.Cells(1).Controls(0), Button)Dim monmessage AsNew Messagemonmessage.Type = "confirm"
monmessage.ContenuMessage = "Désirez-vous vraiment supprimer cette occurence ?"
monmessage.ActionTrue = ""
monmessage.ActionFalse = "return false;"
btn.Attributes.Add("onclick", monmessage.AfficherMessage())
Catch ex As ExceptionEndTryEndSubEnd
Class