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