Ciao a tutti!
Ho un problemino, che subito vi illustrerò.
Ho creato dei datagrid personalizzati con colonne Template per la modifica, l'inserimento e la cancellazione dei files.
I datagrid vengono popolati da una datasource ad hoc nel codebehind e di recente è sorto il problema di localizzare il tutto.
Per risolvere il problema ho approntato una serie di assembly satellite con le risorse di ogni lingua e al momento della popolazione della pagina uso un ResourceManager per avere le stringhe relative alla lingua in uso.
Lo stesso procedimento avviene facilmente anche per tutti gli oggetti del codebehind. Per gli header dei datagrid, ad esempio, uso un costrutto del tipo:
codice:
ResourceManager rm = new ResourceManager()...
foreach(DataGridColumn colonna in MioDataGrid.Columns)
{
if (colonna.HeaderText=="NomeCampoIniziale")
{
colonna.HeaderText=rm.GetString("ChiavePerCampoNoto");
}
}
dove NomeCampoIniziale corrisponde allo HeaderText di una TemplateColumn del codice ASP.NET
IL Problema sorge quando devo cambiare il testo contenuto in un LinkButton di una EditCommandColumn appartenente ai templates.
Qualcuno ha idea di come accedervi??
ecco un paio di spezzoni del codice:
Parte ASP.NET
codice:
<asp:DataGrid id="DataGrid1" runat="server" AllowSorting="true" OnUpdateCommand="DataGridUpdateCommand" OnCancelCommand="DataGridCancelCommand" OnEditCommand="DataGridEditCommand" OnDeleteCommand="DataGridDeleteCommand" showfooter="false" >
<FooterStyle cssclass="TabellaBluFooter"></FooterStyle>
<HeaderStyle cssclass="TabellaBluHeader"></HeaderStyle>
<PagerStyle horizontalalign="Left" mode="NumericPages"></PagerStyle>
<SelectedItemStyle ></SelectedItemStyle>
<EditItemStyle cssclass="TabellaBluRigaEdit"></EditItemStyle>
<ItemStyle cssclass="TabellaBluRigaBianca"></ItemStyle>
<AlternatingItemStyle cssclass="TabellaBluRigaAzzurra"></AlternatingItemStyle>
<Columns>
<asp:TemplateColumn HeaderText="Ora Inizio">
<ItemTemplate>
<asp:Label runat="server" text='<%# DataBinder.Eval(Container.DataItem, "inizio") %>' style="width:5em;" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="edit_inizio" Text='<%# DataBinder.Eval(Container.DataItem, "inizio") %>' style="width:5em;" />
<n0:RequiredDOMValidator id="RequiredFieldValidator1" runat="server" ErrorMessage="campo inizio richiesto" ControlToValidate="edit_inizio" Display="Dynamic">campo Inizio richiesto</n0:RequiredDOMValidator>
<n0:RegexDOMValidator id="RegularExpressionValidator1" runat="server" ErrorMessage="campo inizio non valido" ControlToValidate="edit_inizio" ValidationExpression="^((0?[1-9]|1[012])([:]){0,1}([0-5]\d){0,2}(\ Travel [ap]M))$|^([01]\d|2[0-3])([:]){0,1}([0-5]\d){1,2}$" Display="Dynamic"></n0:RegexDOMValidator>
</EditItemTemplate>
<FooterTemplate></FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Ora Fine">
<ItemTemplate>
<asp:Label runat="server" text='<%# DataBinder.Eval(Container.DataItem, "fine") %>' style="width:5em;" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="edit_fine" Text='<%# DataBinder.Eval(Container.DataItem, "fine") %>' style="width:5em;" />
<n0:RequiredDOMValidator id="RequiredFieldValidator2" runat="server" ErrorMessage="campo fine richiesto" ControlToValidate="edit_fine" Display="Dynamic">campo fine richiesto</n0:RequiredDOMValidator>
<n0:RegexDOMValidator id="RegularExpressionValidator2" runat="server" ErrorMessage="campo fine non valido" ControlToValidate="edit_fine" ValidationExpression="^((0?[1-9]|1[012])([:]){0,1}([0-5]\d){0,2}(\ Travel [ap]M))$|^([01]\d|2[0-3])([:]){0,1}([0-5]\d){1,2}$" Display="Dynamic"></n0:RegexDOMValidator>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Aggiorna" HeaderText="Cambia" CancelText="Annulla" EditText="Modifica" >
<HeaderStyle width="7em"></HeaderStyle>
</asp:EditCommandColumn>
<asp:ButtonColumn Text="Elimina" CommandName="Delete" />
</Columns>
</asp:DataGrid>
Parte del CodeBehind
codice:
public static void TraduciDataGrid(ref DataGrid DataGrid1,ResourceManager rm)
{
foreach(DataGridColumn colonna in DataGrid1.Columns)
{
if (colonna.HeaderText=="Ora Inizio")
{
colonna.HeaderText=rm.GetString("CampoOraInizio");
}
Una birra a chi mi da una mano 
Ciao A tutti e scusate la lunghezza..