Remplir GridView avec des zones de texte et Dropdownlist de DataTable

J'ai GridView:

  <asp:GridView ID="MyGridView" runat="server" ShowFooter="true"
                                     AutoGenerateColumns="False" Visible="True">
<Columns>
<asp:BoundField DataField="id" ItemStyle-HorizontalAlign="center"/>
<asp:BoundField DataField="fullName"  />
<asp:TemplateField HeaderText="situation>">
<ItemTemplate>
  <asp:DropDownList ID="dl_situation" runat="server" AppendDataBoundItems="true">
   </asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="procesVerbal">
 <ItemTemplate>
         <asp:TextBox ID="tbNr" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>  

<asp:TemplateField HeaderText="Data">
<ItemTemplate>
               <asp:TextBox ID="tbDate" runat="server"></asp:TextBox>
 </ItemTemplate>
</asp:TemplateField>     
</Columns>
</asp:GridView>

Maintenant, j'ai envie de remplir cette Grille avec des données provenant de la base de données, j'ai une méthode qui renvoie datatable avec toutes mes données

lorsque je rempli le mygrid:

 MyGridView.DataSource = dataTable;
 MyGridView.Databind();

dans ce cas, toutes les zones de texte et DropDownList sont nulles.

Dans le code ci-dessous je suis en train de créer une fonction qui reçoit Table de base de données et remplit gridview avec des données. Comment puis-je faire une instruction foreach pour dataTable.Les lignes qui vont affecter des valeurs de texte pour les éléments de zone de texte et selectedIndex valeur DropDownList?

protected bool FillGridWithData(DataTable dataTable)
       {bool result;
       try
       {
           foreach (GridViewRow row in MyGridView1.Rows)
           {
               if (row.RowType != DataControlRowType.DataRow) break;
               var ddl = (DropDownList)row.FindControl("dl_situation");
               if (ddl != null)
               {
                 ddl.DataSource = PublicStatic.Situation;
                 ddl.DataTextField = PublicStatic.Name;
                 ddl.DataValueField = PublicStatic.Code;
                 ddl.DataBind();
                 ddl.Items.Insert(0, new ListItem(String.Empty, String.Empty));
                 ddl.SelectedIndex = //data from datatable;
               }
               var tb1 = (TextBox)row.FindControl("tbNr");
               if (tb1 != null)
                   tb1.Text =//data from datatable;

               var tb2 = (TextBox)row.FindControl("tbDate");
               if (tb2 != null)
                   tb2.Text = //data from datatable;
           }
           result = true;
       }
       catch (Exception exception)
       {
           result = false;
       }
       return result;
   }
InformationsquelleAutor Alex | 2012-08-16