[ASP.NET][C#2] Ajout d'un dropdownlist dans un gridview
Bonjour a tous,
alors mon probleme est que j'ai un gridview dans lequel je souhaite ajouter une
colonne uniquement avec des dropdownlists que j'alimenterais ulterieurement.
Etant debutant je n'arrive deja pas a insérer un dropdownlist dans un gridview
parce que mon prédécesseur a utiliser comme source de données un datatable
En gros voila ce que ca donne
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("numeroQCM", typeof(String)));
dt.Columns.Add(new DataColumn("libelle", typeof(String)));
dt.Columns.Add(new DataColumn("supprimer", typeof(String)));
dt.Columns.Add(new DataColumn("id", typeof(long)));
dt.Columns.Add(new DataColumn("libelleComplet", typeof(String)));
for (int i = 0; i < listeQCM.Length; i++)
{
dr = dt.NewRow();
dr[0] = i + 1;
if (listeQCM[i].Libelle.Length > 60)
{
dr[1] = listeQCM[i].Libelle.Substring(0, 60);
}
else
{
dr[1] = listeQCM[i].Libelle;
}
dr[2] = pageAjouterQuestion_texte_supprimer;
dr[3] = listeQCM[i].Id;
dr[4] = listeQCM[i].Libelle;
dt.Rows.Add(dr);
}
DataView dv = new DataView(dt);
String[] keys = { "numeroQCM", "libelle", "supprimer", "id", "libelleComplet"};
gv_pageAjouterQuestion_QCM.DataKeyNames = keys;
gv_pageAjouterQuestion_QCM.DataSource = dv;
gv_pageAjouterQuestion_QCM.DataBind(); |
Je voudrais donc savoir comment je peux ajouter des dropdownlists a mon gridview de maniere à ce que je puisse les alimenter et récupérer les différentes sélection de chacun
Merci d'avance pour votre aide
Probleme alimentation Ddl
Merci des que j'essaye je te dis ce qu'il en est.
Alors apres modification voila ce que ca donne
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
<asp:GridView ID="gv_pageAjouterQuestion_QCM" BackColor="Snow" BorderColor="Silver" BorderStyle="Solid" runat="server" AutoGenerateColumns="False" OnRowCommand="gv_pageAjouterQuestion_QCM_RowCommand" OnRowDeleting="gv_pageAjouterQuestion_QCM_RowDeleting">
<Columns>
<asp:BoundField DataField="numeroQCM" HeaderText="N°">
<HeaderStyle BackColor="Silver" BorderColor="Silver" Font-Size="10pt" Font-Underline="True" ForeColor="Black" Width="50px" HorizontalAlign="Center" />
<ControlStyle BorderColor="Silver" Width="20px" />
<ItemStyle BorderColor="Silver" Font-Names="Arial" Font-Size="11pt" ForeColor="Black" Height="30px" HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:BoundField>
<asp:ButtonField CommandName="modifierLibelleChoix" DataTextField="libelle">
<HeaderStyle BackColor="Silver" BorderColor="Silver" Font-Size="10pt" Font-Underline="True" ForeColor="Black" Width="410px" HorizontalAlign="Center" />
<ControlStyle BorderColor="Silver" Width="410px" />
<ItemStyle BorderColor="Silver" Font-Names="Arial" Font-Size="11pt" ForeColor="Black" Height="30px" HorizontalAlign="Left" VerticalAlign="Middle" />
</asp:ButtonField>
<asp:ButtonField CommandName="supprimerLibelleChoix" DataTextField="supprimer">
<HeaderStyle BackColor="Silver" BorderColor="Silver" Width="120px" HorizontalAlign="Center" />
<ControlStyle BorderColor="Silver" Width="120px" />
<ItemStyle BorderColor="Silver" Font-Names="Arial" Font-Size="11pt" HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:ButtonField>
<asp:TemplateField >
<ItemTemplate >
<asp:DropDownList ID="DropDownList1" OnSelectedIndexChanged='<%# alimenterDdlQCM() %>' runat="server" DataSource='<%# alimenterDdlQCM() %>'>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<AlternatingRowStyle BackColor="LightCyan" />
</asp:GridView> |
Cela fonctionne tres bien lorsque la page se charge la premiere fois mais des qu'elle se recharge ou qu'il y a un postback les ddl sont vides.
Est ce que vous avez deja rencontré ce probleme ?
en sachant que la fonction qui alimente est celle ci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
public ArrayList alimenterDdlQCM()
{
ArrayList ds = new ArrayList();
//On recupere toutes les questions du questionnaire courant
if (idQuestCourante != -1)
{
long idQuestion = long.Parse(Session["pageAjouterQuestion_idQuestionAModifier"].ToString());
idQuestion = idQuestCourante;
Question[] questionTemp = new LiaisonDB().ExecProcAfficherQuestion(idQuestion, "", -1, -1, -1, -1);
int positionQuest = questionTemp[0].Position;
// Question[] listeQuestion = new LiaisonDB().ExecProcAfficherQuestion(-1, "", -1, -1, -1, idQuestionR);
Question[] listeQuestion = new LiaisonDB().ExecProcAfficherQuestion(-1, "", -1, -1, -1, questionTemp[0].Questionnaire);
foreach (Question q in listeQuestion)
{
if (q.Position > questionTemp[0].Position)
{
ds.Add("Question " + q.Position);
}
}
}
return ds;
} |
Probleme recuperation de donnée
dans le code du m'a donné il y a une ligne qui bug avec une variable non defini.
Code:
DDL = (DropDownList)e.Row.FindControl("DropDownList1");
Par quoi est ce que je dois remplacer le e ???
Merci de votre aide et de votre patience :?