parcourir TOUTES les lignes dans un contrôle GridView
<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<asp:CheckBox ID="chkSelected" runat="server" Checked="false"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
inférieur code fonctionne bien, mais il y a un bug :
si l'Employé objet a de retour de 5 lignes et je suis en train de coché la case à cocher en fonction des id mais au contraire sa juste correspondant seulement le dernier id - il supposer pour vérifié toutes les 5 lignes.
List<Employee> result = new List<Employee>();
long Id = (long)Session["Id"];
result = Employee.GetEmployeeById(Id);
foreach (GridViewRow row in gv.Rows)
{
CheckBox chkBox = row.FindControl("chkSelected") as CheckBox;
if (c != null)
{
if (result.Count > 0)
{
foreach (Employee item in result)
{
Label Id = row.FindControl("lblId") as Label;
if (Id.Text == item.Id.ToString())
{
chkBox.Checked = true;
}
else
{
chkBox.Checked = false;
}
}
}
OriginalL'auteur Nick Kahn | 2011-07-20
Vous devez vous connecter pour publier un commentaire.
Regardez votre logique, vous n'avez que le case. Vous êtes en désactivant et en vérifiant le même contrôle de l'employé de la boucle. Est-ce que chaque ligne de la grille ont une case à cocher qui doit être sélectionné en fonction de l'état de l'id existe dans la liste des employés?
je udated ma question avec des balises html, la réponse à votre question, oui.
je suis de la comparaison de deux id, un id de gridviewrow et les autres id que je reçois de l'employé objet
foreach (Employee....
je ne suis pas sûr que votre code fonctionne.vous devez parcourir chaque gridviewrow, trouver la case à cocher, trouver l'id, sélectionnez si l'id existe dans votre liste d'employés. Est-ce exact?
oui, je suis en utilisant
foreach gridviewrow
et à l'intérieur de la première boucle foreach, je suis en boucle pour objet employé... c'est la confusion de la partie.OriginalL'auteur FiveTools