Salut.
Je réalise actuellement une application qui a pour but de gérer les activités d'un projet.
Ces projets sont constitués de phases elles memes contituées de lots qui contiennent des taches.
Je dois affciher un gridview qui contient cette "arborescence" de la manière suivante projet -> toutes ses phases -> tous leurs lots -> toutes leurs taches.
J'arrive a tout afficher en constituant une datatable et en la bindant, et j'arrive a supprimer des rows.
Le problème est lorsque je veux modifier des données. Je dois remplacer les cellules de la row sélectionnée par des textbox/dropdownlists/ajax calendars... Ca aussi j'arrive a le faire, le pb intervient lorsque je veux récupérer ce que l'utilisateur a saisi dans les textbox(ou autre).
En effet, j'attribue un ID unique pour chaque control, mais lorsque je veux les récupérer avec la méthode FindControl sur la row....j'obtient null.
Je joins mon code...j'ai besoin d'un grand coup de main SVP!!!
merci
protected void gridProjects_RowEditing(object sender, GridViewEditEventArgs e)
{
GridViewRow gvr = gridProjects.Rows[e.NewEditIndex];
int indice = 0;
foreach (TableCell cell in gvr.Cells)
{
//on change de type d'objets web en fonction de la colonne de la table
TextBox textBoxCell;
TextBox box;
Panel panel;
AjaxControlToolkit.PopupControlExtender popupExt;
Calendar calendarEstimatedStartDate;
Calendar calendarEstimatedEndDate;
AjaxControlToolkit.FilteredTextBoxExtender filtre;
DateTime currentDate;
switch (indice)
{
//nom du projet : textbox
case nameColumn:
#region caseNameColumn
textBoxCell = new TextBox();
textBoxCell.ID = "TextBoxCell_" + e.NewEditIndex.ToString() + "_" + indice.ToString();
textBoxCell.Text = "";
if (!(cell.Text.Equals("") || cell.Text.Equals(" ") || cell.Text.Equals(" ") || cell.Text.Equals(null)))
{
textBoxCell.Text += cell.Text;
}
textBoxCell.Width = System.Web.UI.WebControls.Unit.Pixel(60);
textBoxCell.Text = textBoxCell.ID.ToString();
cell.Controls.Add(textBoxCell);
break;
...
}
}
protected void gridProjects_RowUpdating1(object sender, GridViewUpdateEventArgs e)
{
GridViewRow gvr = gridProjects.Rows[e.RowIndex];
if (gvr != null)
{
TextBox box = gvr.FindControl("TextBoxCell_0_2") as TextBox;
if (box == null)
{
Label1.Text = "textbox nulle";
}
}
}