Le BoundColumn del DataGrid purtroppo non supportano la possibilità di impostare la proprietà TextMode della TextBox creata in fase di editing su MultiLine, opzione comoda in moltissimi casi, ad esempio quando si deve modificare un testo abbastanza lungo.
Senza ricorrere ad una TemplateColumn, che richiede un cambiamento anche nella logica di recupero dei dati, è sufficiente intercettare l'evento OnItemDataBound del DataGrid, che si verifica in fase di associazione dei dati, per cambiare le proprietà della TextBox contenuta.
<SCRIPT language="C#" runat="server"> // inserire le routine di estrazione dati, vedi #388 o #469 private void ItemDataBound(object sender, DataGridItemEventArgs e) { if (e.Item.ItemType == ListItemType.EditItem) { // recupero il Textbox della sesta colonna TextBox t = ((TextBox) e.Item.Cells[5].Controls[0]); // cambio la tipologia ed imposto righe e colonne t.TextMode = TextBoxMode.MultiLine; t.Rows = 5; t.Columns = 20; } } // selezioni la riga sul DataGrid public void Edit(object sender, DataGridCommandEventArgs e) { myDataGrid.EditItemIndex = e.Item.ItemIndex; bindData(); } </SCRIPT> <form runat="server"> <ASP:DataGrid id="myDataGrid" runat="server" [code lang="c#"] onItemDataBound="ItemDataBound" onEdit="Edit"> <Columns> <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Aggiorna" CancelText="Annulla" EditText="Modifica" /> </Columns> </ASP:DataGrid> </form>
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.