4

当页面加载时,屏幕上有一个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>
4

2 回答 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;

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

于 2013-06-26T14:17:35.890 回答
0

你可以试试这个

网格视图标记:

<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;
  }
于 2013-06-26T14:11:12.007 回答