C# GridView ASP.Net中的ViewState

C# GridView ASP.Net中的ViewState,c#,asp.net,gridview,viewstate,C#,Asp.net,Gridview,Viewstate,我有一个gridview,它连接到aspx代码中的数据源。选定的gridview行在clcik on按钮上隐藏。我想永久隐藏该行,即使用户注销并且不应显示隐藏行中的日志。我尝试过使用ViewState,但它不起作用。任何人都不知道如何做到这一点 我的网格视图: edit Select Approve data 1 data 2 data 3 当用户单击“选择”并单击“批准”按钮时,该行将隐藏。我希望调用所有行,但单击的行除外,单击的行不应显示。我做了一些研究,发现ViewState是最好的,但

我有一个gridview,它连接到aspx代码中的数据源。选定的gridview行在clcik on按钮上隐藏。我想永久隐藏该行,即使用户注销并且不应显示隐藏行中的日志。我尝试过使用ViewState,但它不起作用。任何人都不知道如何做到这一点

我的网格视图:

edit Select Approve data 1 data 2 data 3
当用户单击“选择”并单击“批准”按钮时,该行将隐藏。我希望调用所有行,但单击的行除外,单击的行不应显示。我做了一些研究,发现ViewState是最好的,但不知道如何实现它

我的后台代码:

SqlConnection con = new SqlConnection("Data Source=User-PC\\User;Initial Catalog=Subject Registration System;Integrated Security=True");

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["username"] != null)
        {
            Label1.Text = Session["username"].ToString();

        }

        con.Open();


        SqlCommand cmd = new SqlCommand("SELECT FullName FROM [Programme Leader] WHERE Username= '" + Label1.Text + "'", con);
        SqlDataReader reader = cmd.ExecuteReader();

        reader.Read();
        Label1.Text = reader["FullName"].ToString();
        reader.Close();

        con.Close();



        if (!Page.IsPostBack)
        {
            string gd;
            gd = (string)ViewState["Gridview"];
        }



        Panel2.Visible=true;
        Panel3.Visible = false;
    }

    protected void DDL1_SelectedIndexChanged(object sender, EventArgs e)
    {

        Panel2.Visible = true;

    }



    protected void GridView2_RowEditing(object sender, GridViewEditEventArgs e)
    {

        Panel2.Visible = true;
        GridView2.DataBind();
    }

    protected void GridView2_RowUpdated(object sender, GridViewUpdatedEventArgs e)
    {

        Panel2.Visible = true;
        GridView2.DataBind();

    }



    protected void Button1_Click(object sender, EventArgs e)
    {

          GridView1.SelectedRow.Visible = false;

        ViewState["gridview"]=GridView1;



    }


    protected void Button2_Click(object sender, EventArgs e)
    {
    Response.Redirect("~/Programme Leader Front Page.aspx");
    }



 }



}

谢谢

如果隐藏的行与特定用户绑定,则可以将其持久化到数据库。因此,新表将包含gridview行的主键和用户id。在对gridview执行select时,只需排除存储在新表中的用户行


视图状态是ASP.NET页面框架用于在往返之间保留页面和控件值的方法。视图状态在您的情况下不起作用,因为您希望在用户注销时保留信息。

您必须将该用户的隐藏行存储在永久性位置,如数据库中。