2013-06-26 198 views
4

當頁面加載時,屏幕上會出現一個gridview,下面有一個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> 

代碼隱藏

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

該按鈕不在gridview中,位於gridview之外。 – Apollo