单击按钮时隐藏Gridview行

时间:2013-06-26 13:39:58

标签: c# asp.net gridview

当页面加载时,屏幕上有一个gridview,下面有一个asp按钮。我想要做的是当用户点击按钮时,它会在gridview上隐藏一行。我不希望从数据源中删除数据我只想将其隐藏在用户之外。知道如何在C#

中做到这一点
<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>

2 个答案:

答案 0 :(得分: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;

创建另一个方法

我不知道这是否是最好的方式,但是有效。 我希望能有所帮助。

答案 1 :(得分: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;
  }