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>
4

2 に答える 2

2

私はこのソリューションをテストしましたが、方法は Css だと思います。これにより、次の false が表示されます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 に答える