我有一个网格视图,其中有更新/删除行的功能。我使用存储过程将数据存储到SQL中。当我单击编辑按钮并更改现有值,并单击更新按钮后,我得到旧值。
我的代码是:protected void grdNatureFormation_RowUpdating(object sender, System.Web.UI.WebControls.GridViewUpdateEventArgs e)
{
ConnectionString = GetConnectionString();
LinkButton link = (LinkButton)grdNatureFormation.Rows[e.RowIndex].FindControl("btnUpdate");
int id = Convert.ToInt32(link.CommandArgument);
TextBox title = (TextBox)grdNatureFormation.Rows[e.RowIndex].FindControl("txtTitle");
if(title != null)
{
using (SqlConnection Sqlcon = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
Sqlcon.Open();
cmd.Connection = Sqlcon;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "NatureOfFormation";
cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.Int)).Value = id;
cmd.Parameters.Add(new SqlParameter("@Title", SqlDbType.VarChar)).Value = title.Text.Trim();
cmd.Parameters.Add(new SqlParameter("@Action", SqlDbType.VarChar)).Value = "update";
cmd.ExecuteNonQuery();
grdNatureFormation.EditIndex = -1;
LoadData();
}
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
LoadData();
}
}
private void LoadData()
{
ConnectionString = GeneralMethods.GetConnectionString();
SqlConnection Sqlcon = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand();
try
{
Sqlcon.Open();
cmd.Connection = Sqlcon;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "xxx";
cmd.Parameters.Add(new SqlParameter("@Action", SqlDbType.VarChar, 50));
cmd.Parameters["@Action"].Value = "select";
SqlAda = new SqlDataAdapter(cmd);
ds = new DataSet();
SqlAda.Fill(ds);
grdNatureFormation.DataSource = ds;
grdNatureFormation.DataBind();
}
catch
{
}
finally
{
if (Sqlcon.State == ConnectionState.Open)
Sqlcon.Close();
Sqlcon.Dispose();
cmd.Dispose();
}
}
我在互联网上搜索了这个问题,大多数帖子建议将数据绑定方法放在(!Page.IsPostBack)
中,但在我的情况下,它已经处于相同的条件下,但没有得到价值。
我该怎么做才能在RowUpdating
事件中获得新值?
RowUpdating
在 gridview值更新之前被称为。您需要将代码放入RowUpdated
事件处理程序中。
更多信息,参见手册:GridView Events
RowUpdating -在单击行Update按钮时发生,但在GridView控件更新行之前发生。
RowUpdated -在单击行更新按钮时发生,但在GridView控件更新行之后。