Q: Gridview saving on data loses old value I get data from db. to dropdown list, if some values empty then I bind other data in DropDownList on row data bound. While saving GridView data on button click new selected values only updated. Lost old data values. 
Everything works fine except lost old data value
protected override void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
       PopulateLeaveAssignList();
    }
}

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DataRowView dr = e.Row.DataItem as DataRowView;
        shiftMgr = new ShiftManagerBL(BasePage.Provider, BasePage.ConnectionString);
        DataTable table = shiftMgr.GetAllShifts(userId);

        DropDownList DropDownList51 = (DropDownList)e.Row.FindControl("DropDownList51");
        DropDownList DropDownList52 = (DropDownList)e.Row.FindControl("DropDownList52");

        if (!string.IsNullOrEmpty(dr["S1"].ToString()))
        {
            DropDownList51.DataSource = table;
            DropDownList51.DataBind();
            string a = dr["S1"].ToString(); 
            DropDownList51.SelectedItem.Text = dr["S1"].ToString();
        }
        else
        {
            DropDownList51.DataSource = table;
            DropDownList51.DataTextField = "shift_title";
            DropDownList51.DataValueField = "shift_id";
            DropDownList51.DataBind();
        }

        if (!string.IsNullOrEmpty(dr["S2"].ToString()))
        {
            DropDownList52.DataSource = table;
            DropDownList52.DataBind();
            DropDownList52.SelectedItem.Text = dr["S2"].ToString();
        }
        else
        {
            DropDownList52.DataSource = table;
            DropDownList52.DataTextField = "shift_title";
            DropDownList52.DataValueField = "shift_id";
            DropDownList52.DataBind();
        }
    }
}

protected void UpdateAllCustomer(object sender, EventArgs e)
{
    foreach (GridViewRow row in GridView1.Rows)
    {
        Rs.S1 = ((DropDownList)row.FindControl("DropDownList51") as DropDownList).SelectedItem.Value;
        Rs.S2 = ((DropDownList)row.FindControl("DropDownList52") as DropDownList).SelectedItem.Value;
    }
}

I need to save old DropDownList value as well as newly changed value
