Gridview更新不会在回发时保留

时间:2013-11-08 05:19:13

标签: c# asp.net .net

protected void GVVAC_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    DataTable dt = new DataTable();
    int st = Convert.ToInt32(GVVAC.DataKeys[e.RowIndex].Values[0].ToString());
    TextBox txtage1 = (TextBox)GVVAC.Rows[e.RowIndex].FindControl("txtage");
    TextBox txtvaccinename1 = (TextBox)GVVAC.Rows[e.RowIndex].Cells[3].Controls[1];
    TextBox txtadmin1 = (TextBox)GVVAC.Rows[e.RowIndex].Cells[4].Controls[1];
    TextBox txtdose1 = (TextBox)GVVAC.Rows[e.RowIndex].Cells[5].Controls[1];

    breederdailypl.Age = Convert.ToInt32(txtage1.Text.ToString());
    breederdailypl.vaccine = txtvaccinename1.Text.ToString();
    breederdailypl.admin = txtadmin1.Text.ToString();
    breederdailypl.dose = txtdose1.Text.ToString();



    breederdailypl.Snum = st;
    dt = breederdailybal.updatevaccine(breederdailypl);
    //chkHatchdetails = objhatcheryBAL.updateHatchMasterdet(objhatcheryPL);
    ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "UpdateDetails", "alert('Update Successful');", true);
    GVVAC.EditIndex = -1;

    grid();

}

当我编辑文本框并输入新值时,新值不会出现在文本框中。

2 个答案:

答案 0 :(得分:2)

我不确定你写的代码。 但我猜想,最初当你绑定你的网格视图时,它在if(!IsPostback)条件之外。所以在里面编写代码!IsPostback条件如下所示:

If(!IsPostback)
{
 grid();
}

如果,它不在!IsPostback 条件下,那么当您更新行时,它将首先转到您的页面加载,再次绑定网格然后它将转到 RowUpdating 事件。因此,你将永远获得旧的价值。

所以我建议你的代码在 if(!IsPostback)条件下绑定网格视图。

答案 1 :(得分:0)

为文本框提供新值,您必须绑定到网格新值,所以

breederdailybal.updatevaccine(breederdailypl);

必须更新

中的数据
breederdailybal.GetBreederVaccination(breederdailypl);

在你的情况下数据可能没有更新