2013-06-26 9 views
4

Lorsque la page est chargée, une grille s'affiche à l'écran avec un bouton ASP en dessous. Ce que je veux faire, c'est quand l'utilisateur clique sur le bouton, il cache une ligne sur la grille. Je ne veux pas que les données soient supprimées de la source de données, je veux simplement les cacher à l'utilisateur. Toute idée comment faire cela en C#Masquer Gridview Ligne lorsque le bouton est cliqué

<asp:Button ID="btnReceive" runat="server" Height="156px" Text="Receive" 
     Width="131px" onclick="btnReceive_Click" /> 



    <asp:GridView ID="GridView1" runat="server"> 
     <Columns> 
      <asp:BoundField DataField = "Aitem" HeaderText="A" /> 
      <asp:BoundField DataField = "Bitem" HeaderText="B" /> 
     </Columns> 
    </asp:GridView> 
+1

Avez-vous essayé d'utiliser javascript? –

+0

Non. Aucune idée de comment le faire en javascript. – Apollo

Répondre

2

Je testé cette solution, mais je pense que le chemin est Css, cela mettra visible false count() - 1:

Mettre un panneau de mise à jour dans votre grille

<asp:UpdatePanel runat="server"> 
     <ContentTemplate> 
<asp:GridView ID="GridView1" runat="server"> 
    <Columns> 
     <asp:BoundField DataField = "ProductName" HeaderText="A" /> 
     <asp:BoundField DataField = "CategoryName" HeaderText="B" /> 
    </Columns> 
</asp:GridView> 
      </ContentTemplate> 
    </asp:UpdatePanel> 

//Put this when you populate the grid 
ViewState["X"] = GridView1.Rows.Count; 
ViewState["Y"] = 1; 

Un dans votre bouton mettre ceci:

protected void btnReceive_Click(object sender, EventArgs e) 
    { 
      int X = int.Parse(ViewState["X"].ToString()); 
      int Y = int.Parse(ViewState["Y"].ToString()); 
      if (Y < GridView1.Rows.Count) 
      { 
       GridView1.Rows[X - Y].Visible = false; 
       ViewState["Y"] = Y + 1; 
      } 
    } 

Si vous devez afficher les lignes encore seulement créer une autre méthode avec gvrow.Visible = true;

Je ne sais pas si c'est la meilleure façon mais fonctionne. J'espère que cette aide.

+0

J'ai une minuterie dans mon panneau de mise à jour car une nouvelle rangée entre dans la grille, elle doit être mise à jour de temps en temps. Lorsque la minuterie actualise le panneau de mise à jour, elle actualise la grille et ramène la ligne masquée. De toute façon pour contourner ça. – Apollo

+0

@Apollo Mais seulement j'ai mis le panneau de mise à jour dans l'exemple mais vous pouvez le supprimer. –

+0

J'avais déjà le panneau de mise à jour en place. Est nécessaire puisque je dois montrer les enregistrements qui viennent régulièrement et quand un bouton est cliqué il obtient l'enregistrement suivant et il cache cet enregistrement de gridview. – Apollo

0

Vous pouvez essayer cette

Markup gridview:

<asp:TemplateField> 
    <ItemTemplate> 
    <asp:LinkButton ID="LinkButton1" runat="server" 
       Text="Click1" 
       OnClick="LinkButton1_Click" /> 
    </ItemTemplate> 

code-behind

protected void LinkButton1_Click(object sender, EventArgs e) 
    { 
GridViewRow clickedRow = ((LinkButton) sender).NamingContainer as GridViewRow; 
clickedRow.Visible = false; 
    } 
+1

Le bouton n'est pas dans le gridview, est en dehors de la grille. – Apollo

Questions connexes