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

.
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top