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;
}
Vous devez vous connecter pour publier un commentaire.
La
DataField
attribut dans le champ lié doit être égal à lacolumn name
dans la datatable.Pour la liaison des zones de texte dans le champ modèle, vous pouvez utiliser la fonction Eval ou Méthode de liaison.
Exemple:
et pour la liaison de la liste déroulante dans le contrôle gridview, vous pouvez utiliser une source de données sql. et de préciser dropdownlist DataSourceID,propriétés de datatextfield et DataValueField propriété.
Dropdownlist Exemple:
et si vous souhaitez lier à la source de données de code derrière, alors vous pouvez utiliser
RowDataBound
cas de gridview}