2017-04-30 1 views
0

Diese Gridview zeigt die Werte der Tabelle "productos" zeigt momentan eine Schaltfläche in allen Zeilen an, aber ich muss nur in den Zeilen eine Schaltfläche anzeigen (Existencias) höher als 0Schaltfläche in Gridview nur anzeigen, wenn der Spaltenwert größer als 0 ist

<div>  
    <asp:SqlDataSource ID="SqlDataSource1" runat="server"ConnectionString="<%$ ConnectionStrings:bodegahyhConnectionString %>" SelectCommand="SELECT * FROM [Productos]"></asp:SqlDataSource> 
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="IdProducto" DataSourceID="SqlDataSource1"> 
     <Columns> 
      <asp:BoundField DataField="IdProducto" HeaderText="IdProducto" InsertVisible="False" ReadOnly="True" SortExpression="IdProducto" /> 
      <asp:BoundField DataField="IdCiudad" HeaderText="IdCiudad" SortExpression="IdCiudad" /> 
      <asp:BoundField DataField="IdTamano" HeaderText="IdTamano" SortExpression="IdTamano" /> 
      <asp:BoundField DataField="IdFragilidad" HeaderText="IdFragilidad" SortExpression="IdFragilidad" /> 
      <asp:BoundField DataField="IdMarca" HeaderText="IdMarca" SortExpression="IdMarca" /> 
      <asp:BoundField DataField="IdUbicacion" HeaderText="IdUbicacion" SortExpression="IdUbicacion" /> 
      <asp:BoundField DataField="IdProveedor" HeaderText="IdProveedor" SortExpression="IdProveedor" /> 
      <asp:BoundField DataField="NomProducto" HeaderText="NomProducto" SortExpression="NomProducto" /> 
      <asp:BoundField DataField="Descripcion" HeaderText="Descripcion" SortExpression="Descripcion" /> 
      <asp:BoundField DataField="Existencias" HeaderText="Existencias" SortExpression="Existencias" /> 
      <asp:BoundField DataField="PrecioVenta" HeaderText="PrecioVenta" SortExpression="PrecioVenta" /> 
      <asp:BoundField DataField="PrecioCompra" HeaderText="PrecioCompra" SortExpression="PrecioCompra" /> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:Button id="btn_agregar" runat="server" Text="Agregar" Enabled="true" /> 
      </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 
    <br /> 
    <br />  
</div> 

Antwort

0

Sie können dies leicht tun, indem Sie den Spaltenwert als Inline-if-Anweisung überprüft, die einen boolean für die Visibility-Eigenschaft zurückgibt.

<asp:Button id="btn_agregar" runat="server" Visible='<%# Convert.ToInt32(Eval("IdProducto")) > 0 %>' Text="Agregar" /> 
+0

Vielen Dank VDWWD es funktionierte perfekt, das Ding zwischen <%# %>, ist das Javascript? (Ich bin Anfänger) –

+0

Nein, das ist Aspnet-Code. Sehen Sie hier für mehr Info http://stackoverflow.com/questions/5833278/meaning-of-the-various-symbols-in-aspx-page-of-asp-net – VDWWD

0

Versuchen unten wie gesagt (-Code nicht getestet ..)

Verwenden RowDataBound Ereignis. Das Ereignis RowDataBound wird ausgelöst, wenn eine Datenzeile (dargestellt durch ein Objekt GridViewRow) an Daten im GridView-Steuerelement gebunden ist.

Fügen Sie zuerst zu Ihrer ASP gridview Definition hinzu, wie unten gezeigt.

Weiter in Ihrem Code hinter Datei behandeln das Ereignis und zeigen/verstecken Sie die Schaltfläche wie unten gezeigt.

void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e) 
    { 

    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 

     //GET THE BUTTON. 
     Button button1 = (Button)e.Row.FindControl("btn_agregar"); 

     //CHECK CONDITION AND SHOW/HIDE ACCORDINGLY. 
     if (YOUR CONDITION) 
     button1.Visible = true; 
     else 
     button1..Visible = false; 

    } 
} 
Verwandte Themen