Bonjour,
J'ai une table X(idX,...., #idprix) et une table Prix(idprix, libelle).
Je veux afficher la table X dans un gridview ainsi que le libelle de la table Prix:
|idX|....|...|...|libelle|
|....|....|...|...|.......|
Quand je clique sur "edit" le libelle devient une liste qui sera chargée à partir de la liste des libelle de la table Prix qui nous laissera choisir avec quel libelle on veut modifier le libelle courant.
1| Au debut, j'ai remplis ma liste à partir d'un linqdatasource, et j'ai mis libelle comme datatextfield et idprix comme datavaluefield. Jusqu'ici quand je clique sur edit dans le grid j'ai ma liste pleine, je selectionne un element, puis je clique sur "update" => la valeur ne se modifie pas. Après avoir cherché sur le net, j'ai trouvé une solution: j'ai ajouté à la liste ce bout de code :
SelectedValue='<%# Bind("idprix") %>'
=> ça marche à merveille pour update !
2| Après j'ai voulu faire tout cela sans passer par un linqdatasource ou un sqldatasource pour remplir ma ddl :
1 2 3 4 5 6 7 8 9 10 11
| protected void gridView_RowDataBound(object sender, GridViewRowEventArgs e) {
if (grdDevelopment.EditIndex == e.Row.RowIndex && e.Row.RowType==DataControlRowType.DataRow) {
//Vérifie l'index de la cellule qui contient ta liste déroulante, dans cas il s'agit de la colonne n°1
DropDownList drpBuildServers = (DropDownList)e.Row.Cells[0].FindControl("ddl");
var id = (from a in bd.Prix select a).ToList();
dp1.DataSource = id;
dp1.DataTextField = "libelle";
dp1.DataValueField = "idprix";
dp1.DataBind(); } } |
ce bout de code a remplacé ce que j'ai fait dans |1| pour le linqdatasource, le DataTextField et le DataValueField. Là quand je clique sur edit ma liste est pleine, mais quand je clique sur update => la valeur ne se modifie pas.
Comme au debut, j'ai essayer d'utiliser la même solution: j'ai ajouté à la liste ce bout de code :
SelectedValue='<%# Bind("idprix") %>'
=>Erreur! pour update.
C'est ce que j'essaye de comprendre !
J’espère avoir été clair!
Merci
Partager