Définir CommandField Sélectionnez Visibilité de la page ASPX
-
16-09-2019 - |
Question
Je veux faire quelque chose comme ça avec un GridView:
<asp:CommandField ShowSelectButton="True" Visible='<%# return Eval("SC_TABLE") %>' />
Mais cela ne fonctionne pas, à venir avec l'erreur:
expressions de liaison de données ne sont supporté sur des objets qui ont un événement DataBinding. System.Web.UI.WebControls.CommandField ne dispose pas d'un événement DataBinding.
Y at-il de toute façon je peux définir la visibilité de la page ASPX? PS: SC_TABLE existe de la source de données, donc rien de mal de cette partie
.La solution
Vous pouvez le faire avec un TemplateField à la place ...
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton runat="server" ID=SelectButton CommandName="SELECT" Visible='<%# Eval("SC_TABLE") %>' Text="Select" />
</ItemTemplate>
</asp:TemplateField>
Autres conseils
J'ai trouvé la réponse à la fin de ce poste :
En gros, vous devez capturer l'événement RowCreated sur le DataGrid
OnRowCreated = "GridView1_RowCreated"
Ensuite, sur la page aspx.cs utiliser le code suivant pour masquer les commandes:
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex == 1)
{
e.Row.Cells[0].Controls.Clear();
}
}
Il fonctionne si vous avez un CommandField dans la première colonne.