ALTRO MODO !
Con lo stratagemma che abbiamo discusso sopra le cose funzionano, ma nel caso del linkbutton "Annulla" la selezione non avviene correttamente (probabilmente perchè tale oggetto appartiene solo al template di modifica)

Invece di usare una EditCommandColumn ed impazzire dal CodeBehind,
basta caricare il resourceManager per la traduzione anche nella pagina ASP.net con:
codice:
<%@Import namespace="System.Globalization"%>
<%@Import namespace="System.Resources"%>
<%@Import namespace="System.Threading"%>
<%@Import namespace="System.IO"%>

<%@ import Namespace="System.Reflection" %>
<%
  ResourceManager rm = (ResourceManager) Application["RM"];
  Response.Write(rm.GetString("TariffeGiornaliere"));
%>
e poi SOSTITUIRE LA EditCommandColumn con una TemplateColumn che ne mimi il comportamento

codice:
<asp:TemplateColumn HeaderText="Cambia">
  <ItemTemplate>
   <asp:LinkButton runat="server" CommandName="Edit"><%# rm.GetString("Modifica") %>
   </asp:LinkButton>
  </ItemTemplate>
 <EditItemTemplate>
    <asp:LinkButton runat="server" CommandName="Update"><%# rm.GetString("Aggiorna") %>
    </asp:LinkButton>
    <asp:LinkButton runat="server" CommandName="Cancel"><%# rm.GetString("Annulla") %>
    </asp:LinkButton>
 </EditItemTemplate>
</asp:TemplateColumn>
In tal modo si hanno a disposizione le stringhe con i comandi e si possono usare i tag server di binding <#% e %> per richiamare il
resourceManager ed avere la traduzione

Direi che è un po' meno macchinoso (Odio gli algoritmi di ordine>1!!)

Bye Bye