Désactivation de ButtonField lorsque BoundField est égal à zéro

J'ai ce GridView qui remplit sur le Page_Load :

 protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { GridView1.DataSource = actBO.BuscarActividades(); GridView1.DataBind(); } } 

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" > <Columns> <asp:BoundField DataField="Id" HeaderText="ID" Visible="False" /> <asp:BoundField DataField="Class" HeaderText="Class" /> <asp:BoundField DataField="Day" HeaderText="Day" /> <asp:BoundField DataField="Time" HeaderText="Time" /> <asp:BoundField DataField="Vacants" HeaderText="Vacants" /> <asp:ButtonField ButtonType="Button" HeaderText="Book" Text="Book"/> </Columns> </asp:GridView> 

Lorsque la colonne "Vacants" affiche un int (il représente le nombre d'espaces de réservation vacants dans une class).

Chaque rangée aura un button pour réserver une class spécifique. J'ai besoin de placer une condition pour quand le champ "Vacants" est zéro, ainsi le button "Livre" sera désactivé.

Jusqu'à présent, voici à quoi cela ressemble: l' image .

Comme vous pouvez le voir, j'ai besoin que le button soit désactivé lorsqu'il n'y a plus de posts vacants. Il ne devrait pas pouvoir être cliqué.

Pour ce faire, vous devez save l'événement OnRowDataBound . Plus d'explications peuvent être trouvées ici .

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound"> <Columns> <asp:BoundField DataField="Id" HeaderText="ID" Visible="False" /> <asp:BoundField DataField="Class" HeaderText="Class" /> <asp:BoundField DataField="Day" HeaderText="Day" /> <asp:BoundField DataField="Time" HeaderText="Time" /> <asp:BoundField DataField="Vacants" HeaderText="Vacants" /> <asp:ButtonField ButtonType="Button" HeaderText="Book" Text="Book"/> </Columns> </asp:GridView> protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { // get your button via the column index; ideally you could use template field and put your own button inside var button = e.Row.Cell[5].Controls[0] as Button; int vacant = 0; var vacantVal = int.TryParse(e.Row.Cell[4].Text, out vacant); if (button != null) { button.Enabled = vacant > 0; } } } 

J'espère que cela aide.