点击按钮时隐藏GridView行

4
当页面加载时,屏幕上有一个网格视图,并在其下方带有一个ASP按钮。我想要做的是当用户点击按钮时,隐藏网格视图中的一行。我不想从数据源中删除数据,只是想让用户看不到它。有没有办法在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>

1
你尝试过使用JavaScript吗? - Brad M
不行。我不知道如何在JavaScript中实现它。 - Apollo
2个回答

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;

我不知道这是否是最好的方法,但它有效。希望能帮到你。


我在我的更新面板中有一个计时器,因为新的行进入网格视图后,它必须定期更新。当计时器刷新更新面板时,它会刷新网格视图并带回被隐藏的行。有没有办法解决这个问题? - Apollo
@Apollo,但是我只是在示例中放置了更新面板,你可以将其删除。 - Wilfredo P
我已经设置好了Update panel。这是必需的,因为我需要定期显示记录,并且当按钮被点击时,获取下一条记录并将其从网格视图中隐藏。 - 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
按钮不在网格视图中,而是在网格视图外面。 - Apollo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接