Bonjour,
Je reviens vers vous car j'ai toujours mon problème de récupération de données avec mon Gridview.
Alors voilà, mon gridview est crée dynamiquement à l'aide d'une classe Template.
La première colonne de mon gridview contient une liste de libellé. Celle-ci est récupéré au moyen d'une proc SQL et me sert comme datasource du GridView.
Les autres colonnes (le nombre peut varier) sont créer au moyen d'une classe Template. Chaque case contient 2 listes déroulantes et un label.
La dernière colonne du gridview est une colonne de choix. Chaque case contient une case à cocher.
Pour remplir les listes déroulantes, j'utilise des proc SQL également.
J'arrive à afficher correctement le GridView, mais je n'arrive pas générer l'évènement SelectedIndexChanged pour les listes.
Est-ce que vous savez comment faire?
De plus dans le DataBinding des listes déroulantes, j'ai une erreur qui m'indique que le colonname n'est pas une prorpiété du GridView???
Voici le code de ma classe Template:
public void InstantiateIn(System.Web.UI.Control container)
{
switch (templateType)
{
case ListItemType.Header:
Label lbEntete = new Label();
Label lbFranchise = new Label();
Label lbPlafond = new Label();
lbEntete.Text = columnName;
lbFranchise.Text = "Franchise";
lbPlafond.Text = "Plafond";
lbFranchise.CssClass = "LB_Franchise";
lbPlafond.CssClass = "LB_Plafond";
container.Controls.Add(lbEntete);
container.Controls.Add(lbFranchise);
container.Controls.Add(lbPlafond);
break;
case ListItemType.Item:
DropDownList ddl_Franchise = new DropDownList();
DropDownList ddl_Plafond = new DropDownList();
Label mt_option = new Label();
ddl_Franchise.CssClass = "Ddl_Franchise";
ddl_Plafond.CssClass = "Ddl_Plafond";
mt_option.CssClass = "LB_Montant";
ddl_Franchise.ID = "ddl_franchise";
ddl_Plafond.ID = "ddl_plafond";
mt_option.ID = "mt_option";
ddl_Franchise.DataBinding += new EventHandler(ddl_Franchise_DataBinding);
ddl_Plafond.DataBinding += new EventHandler(ddl_Plafond_DataBinding);
mt_option.DataBinding += new EventHandler(mt_option_DataBinding);
container.Controls.Add(ddl_Franchise);
container.Controls.Add(ddl_Plafond);
container.Controls.Add(mt_option);
break;
default:
break;
}
}
void ddl_Plafond_DataBinding(object sender, EventArgs e)
{
DropDownList ddl_Plafond = (DropDownList)sender;
GridViewRow row = (GridViewRow)ddl_Plafond.NamingContainer;
object dataValue = DataBinder.Eval(row.NamingContainer, columnName);
if (dataValue != DBNull.Value)
{
ddl_Plafond.SelectedValue = dataValue.ToString();
}
}
Si vous avez une idée, n'hésiter pas car l'avancé de mon code est pour le moment bloqué tant que je ne trouve pas cette solution.
Merci par avance pour vos réponses