#566 - Aggiungere una DropDownList in un DataGrid

Non esiste una Column che di default sia in grado di mostrare una DropDownList con i valori presi dalla tabella collegata, ma è possibile aggiungere una TemplateColum al DataGrid per arrivare allo stesso scopo.
L'esempio qui riportato non è completo, ma permette di partire da una struttura ed una logica che possono poi essere facilmente adattabili alla propria realtà.

<SCRIPT RUNAT="SERVER" Language="C#">

DataSet MyDS_Cat;

int GetIndex (int ID) {
  // controlla la colonna ID e restituisci l'indice

    for (int i = 0; i< MyDS_Cat.Tables[0].Rows.Count; i++) {
      if (ID == myDS_Cat.Tables[0].Rows[i]["ID"])
        return i;
  }
}

DataSet Categorie() {
  // valorizza la variabile solo se non è stato già fatto

  if (MyDS_Cat == null) {
    // estrazione del DataSet!

  }
  return MyDS_Cat;
}

</SCRIPT>

<ASP:DataGrid id="myDG"  AutoGenerateColumns="False" runat="server">
  <Columns>
    <ASP:TemplateColumn HeaderText="Stato">
      <ItemTemplate>
        <%# Databinder.Eval(Container.DataItem, "Desc"))%>
      </ItemTemplate>
      <EditItemTemplate>
        <asp:dropdownlist datasource='<%# Categorie() %>'
          DataValueField="ID"
          DataTextField="Desc"
          SelectedIndex='<%# GetIndex(Databinder.Eval(Container.DataItem, "ID"))%>'
          runat="server" />
      </EditItemTemplate>
    </ASP:TemplateColumn>
  </Columns>
</ASP:DataGrid>

La funzione Categorie elenca tutti i possibili valori, estraendoli da una tabella collegata.
La funzione GetIndex invece scorre la lista di tutti i valori contenuti all'interno di questa tabella per restituire la posizione in cui si trova il valore impostato all'interno della tabella principale.

Per approfondimenti sul DataGrid si veda:
Speciale DataGrid di ASP.NET
http://www.aspitalia.com/servizi/focus/mostra.aspx?ID=446


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

temujin scrive:
#566 - Aggiungere una DropDownList in un DataGrid

ma chi lo ha scritto questo codice? Funziona davvero?
giovedì 24 marzo 2005 | 1 risposta

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC