TextBox multiriga con il DataGrid

di Daniele Bochicchio, in ASP.NET, C#, System.Data,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi