我正在尝试从网格中删除记录,但不是从数据库中删除。
我想在从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();
}
}
答案 0 :(得分:1)
为此,您需要在各自的数据库表中添加一列是否显示该记录。对于Ex:添加列,如 Visible int 。
假设
可见= 1 - >在gridview中显示该记录
可见= 0 - >在gridview中隐藏该记录
默认情况下,使可见= 1 ,以便所有记录都显示在gridview中(编写查询,如选择......其中Visible = 1 )。尝试删除需要更新可见列 1到0 的记录使用更新 查询。因此,您的gridview仅显示可见= 1的记录。您的gridview中未显示特定已删除记录,因为其可见列为0.请尝试此..