Da quello che ho potuto vedere nel codice, l'aggiornamento della variabile di sessione è corretto e va bene, tu aggiorni la quantità i totali invece andrebbero calcolati al volo grazie all'evento onItemDataBound.
Ti metto un piccolo esempio prendendo il tuo datagrid a cui ho aggiunto l'evento OnItemDataBound :
codice:
<ASP:DataGrid id="MyDataGrid"
runat="server"
BackColor="White"
BorderColor="White"
BorderStyle="Ridge"
BorderWidth="2px"
GridLines="none"
CellPadding="3"
CellSpacing="1"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
AutoGenerateColumns="false"
Width="95%"
HorizontalAlign="Center"
OnItemDataBound="Item_Bound">
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#9471DE"></SelectedItemStyle>
<ItemStyle ForeColor="Black" BackColor="#DEDFDE"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="#E7E7FF" BackColor="#698696"></HeaderStyle>
<FooterStyle ForeColor="Black" BackColor="#C6C3C6"></FooterStyle>
<Columns>
<asp:TemplateColumn HeaderText="Quantità;">
<ItemTemplate>
<asp:TextBox Cssclass="TestoDataGrid" id=txtQty
runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Qty") %>'
OnTextChanged="btnUpdate_click" AutoPostBack="True" Width="40px" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn ItemStyle-CssClass="TestoDataGrid"
DataField="Articolo" HeaderText="Prodotto"></asp:BoundColumn>
<asp:BoundColumn ItemStyle-CssClass="TestoDataGrid"
DataField="PrezzoVendita" HeaderText="Prezzo"
DataFormatString="{0:c}"></asp:BoundColumn>
</Columns>
</ASP:DataGrid>
L'evento Item_Bound che si scatena è questo :
codice:
protected void Item_Bound(Object sender, DataGridItemEventArgs e) {
if((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
{
//Prendo il valore che sta nella cella delle quantità
TextBox qtyTextBox = (TextBox)e.Item.FindControl("txtQty");
//Moltiptlico il valore della quantità per il prezzo e ottengo il totale, lo metto poi nella cella desiderata
e.Item.Cells[2] = Convert.ToInt32(qtyTextBox.Text) * Prezzo; //Dove Prezzo è il valore del prezzo univoco che puoi ricavare dalla variabile di sessione
}
}