Comment l'un peut faire foreach avec GridView
J'ai un GridView avec DB informations.
Dans mon aspx, j'ai 2 case.
J'ai besoin de faire vérifier dans une case à cocher pour chaque ligne en fonction AccessType valeur.
Comment je peux capturer AccessType valeur dans le foreach?
Mon aspx (GridView)
<asp:GridView ID="GridView" runat="server" AutoGenerateColumns="false" GridLines="None">
<Columns>
<asp:BoundField DataField="AccessGroup" HeaderText="Access Group" />
<asp:BoundField DataField="FolderAccess" HeaderText="Folder Access" />
<asp:HyperLinkField DataNavigateUrlFields="group_manager" DataNavigateUrlFormatString="groupinfo.aspx?group={0}"
DataTextField="group_manager" HeaderText="Group Manager" />
<asp:BoundField DataField="AccessType" Visible="false" />
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Text="Access to Read" />
<asp:CheckBox ID="CheckBox2" runat="server" Text="Access to Modify" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Mon .cs
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
var listaProdutos = new RequestAccess().ConsultarProdutos();
if (listaProdutos != null)
{
this.GridView.DataSource = listaProdutos;
this.GridView.DataBind();
foreach (GridViewRow row in GridView.Rows)
{
CheckBox check = (CheckBox)row.FindControl("CheckBox1");
CheckBox check2 = (CheckBox)row.FindControl("CheckBox2");
//EX!!!
//IF AccessType = 1
//{
// check.Checked = true;
//}
//IF AccessType = 2
//{
// check2.Checked = true;
//}
}
}
}
}
Je voudrais utiliser
RowDataBound
à la place d'un autre foreach
.OriginalL'auteur CaioVJesus89 | 2013-06-26
Vous devez vous connecter pour publier un commentaire.
Vous pouvez accéder à
BoundFields
viae.Row.Cells[index].Text
:Cependant, je voudrais utiliser
RowDataBound
à la place d'un autreforeach
.Ici est la
RowDataBound
événement qui est déclenché pour chaque ligne dans leGridView
quand il a été lié aux données. En supposant que leDataSource
est quelque chose comme unDataTable
:Désolé, je dois avouer que je n'ai pas entendu que des commentaires. Voulez-vous dire de passer de "le client"? Alors, non, vous n'êtes pas de l'envoyer au client si le
BoundField
est invisible.Excuses mon anglais! Je suis de passage AccessType valeur pour aspx. Je ne vois pas nécessaire. Je crois que d'une certaine façon d'obtenir cette valeur et de le transmettre à l'intérieur de mon FOREACH directement à travers. CS
Si vous ne souhaitez pas utiliser un
BoundField
à tous, mais au lieu de cela vous voulez utiliser la source de données? Btw, ce qui neConsultarProdutos
retour, unDataTable
?Édité ma réponse incluse la
RowDataBound
approche de vous montrer comment vous pouvez accéder à la source de données directement. Si le casting deDataRowView
échoue, vous devez utiliser le débogueur pour inspecter le type réel dee.Row.DataItem
.OriginalL'auteur Rango
Vous pouvez ajouter la AccessType de la valeur à un HiddenField à l'intérieur de la grille:
et ensuite utiliser le RowDataBound gestionnaire d'événement pour obtenir le AccessType valeur de la HiddenField de contrôle et de définir la case à cocher en conséquence:
Espère que cette aide.
OriginalL'auteur Foub