从gridview删除记录但不从数据库删除

时间:2014-05-05 05:59:38

标签: asp.net sql-server gridview stored-procedures

我正在尝试从网格中删除记录,但不是从数据库中删除。

我想在从gridview删除数据但不想从db中删除记录时设置数据库字段ISDeleted 1.

我的代码从gridview和db中删除记录。

我的代码在哪里更改 -

 string strcon = ConfigurationManager.ConnectionStrings["Dbconnection"].ConnectionString;
SqlCommand command;
protected void Page_Load(object sender, EventArgs e)
{
    tblAdd.Visible = false;
    Label1.Visible = false;
    //GridView1.DataBind();
    if (!Page.IsPostBack)
        {
            fillLanguageGrid();
        }
}

public void fillLanguageGrid()
    {   
        GridView1.DataSourceID = "SqlDataSource1";
        GridView1.DataBind(); 
    }

protected void btnDelete_Click(object sender, EventArgs e)
{
    foreach (GridViewRow gvrow in GridView1.Rows)
    {
        CheckBox chkdelete = (CheckBox)gvrow.FindControl("chk");
        if (chkdelete.Checked)
        {
            string name= Convert.ToString(GridView1.DataKeys[gvrow.RowIndex].Values["Name"].ToString());
           // command.Parameters.Add(new SqlParameter("@status", SqlDbType.VarChar, 50));
            deleteRecordByName(name);
        }
    }
    fillLanguageGrid();
}

public void deleteRecordByName(string Name)
{
    SqlConnection sqlConnection = new SqlConnection(strcon);
    using (SqlCommand command = new SqlCommand("[dbo].[hrm_Langauges]", sqlConnection))
    {
        //  define this to be a stored procedure
        command.CommandType = CommandType.StoredProcedure;
        command.Parameters.Add(new SqlParameter("@status", SqlDbType.VarChar, 50));
        // define the parameter and set its value
        command.Parameters.Add(new SqlParameter("@Name", SqlDbType.VarChar)).Value = Name;
        command.Parameters.Add(new SqlParameter("@IsDeleted", SqlDbType.Bit)).Value = 1;
        command.Parameters["@status"].Value = "Delete";
        //open connection, execute DELETE query, close connection
        sqlConnection.Open();
        command.ExecuteNonQuery();
        sqlConnection.Dispose();
    }

}

1 个答案:

答案 0 :(得分:1)

为此,您需要在各自的数据库表中添加一列是否显示该记录。对于Ex:添加列,如 Visible int

假设

可见= 1 - >在gridview中显示该记录

可见= 0 - >在gridview中隐藏该记录

默认情况下,使可见= 1 ,以便所有记录都显示在gridview中(编写查询,如选择......其中Visible = 1 )。尝试删除需要更新可见 1到0 的记录使用更新 查询。因此,您的gridview仅显示可见= 1的记录。您的gridview中未显示特定已删除记录,因为其可见列为0.请尝试此..