2013-06-26 2 views
4

Когда страница загружается, на экране отображается сетка с помощью кнопки asp ниже. То, что я хочу сделать, - это когда пользователь нажимает кнопку, которая скрывает строку в gridview. Я не хочу, чтобы данные были удалены из источника данных, которые я просто хочу скрыть от пользователя. Любая идея, как сделать это в C#Скрыть строку Gridview при нажатии кнопки

<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

Вы пытались использовать javascript? –

+0

Нет. Не знаю, как это сделать в javascript. – Apollo

ответ

2

Я испытал это решение, но я думаю, что путь это Css, это поставит видно ложно, count() - 1:

Поместите панель обновления в сетке

<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; 

в кнопке поставить это:

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; 
      } 
    } 

Если вам нужно, чтобы показать строки снова создайте еще один метод с gvrow.Visible = true;

Не знаю, если это лучший способ, но работает. Надеюсь, что помощь.

+0

У меня есть таймер в моей панели обновления, так как новая строка входит в gridview, она должна обновляться так часто. Когда таймер обновляет панель обновления, он обновляет gridview и возвращает строку, которая была скрыта. В любом случае, чтобы обойти это. – Apollo

+0

@Apollo Но только я положил панель обновления в примере, но вы можете удалить ее. –

+0

У меня уже была панель обновления. Это необходимо, так как я должен показывать записи, которые поступают регулярно, и когда нажата кнопка, она получает следующую запись, и она скрывает эту запись из gridview. – Apollo

0

Вы можете попробовать этот

GridView Разметка:

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

Code-за

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

Кнопка не находится в режиме сетки, находится вне сетки. – Apollo