#541 - Aggiungere un valore neutro ad una DropDownList con il DataSet

Questo semplice script mostra l'utilità della funzione addElemento per aggiungere alle DropDownList un elemento standard quando il riempimento dell'oggetto viene effettuato direttamente da un database.
Questa funzionalità è molto utile quando abbiamo bisogno di un valore neutro: nell'esempio riportato la lista fa selezionare un indirizzo web presso cui eseguire un'ipotetica ricerca, con la possibilità di poter effettuare la ricerca fra tutti quelli elencati.

Il vantaggio di questa opzione deriva dal fatto che il controllo sulla selezione viene effettuato sul valore "0" e non sui vari Nothing, DBnull o "" che sono sicuramente più difficili da gestire.

<%@ page language="vb" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.oleDB" %>
<SCRIPT RUNAT="Server">

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
  If Not IsPostBack Then
    Dim myConnection As New OleDBConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\lista.mdb")
    Dim Adapt as new OledbDataAdapter("SELECT id, lista FROM Liste", myConnection)

    'riempio il dataset
    Dim Ds As DataSet = new DataSet()
        Adapt.Fill(Ds, "Liste")
   
    ' Associazione di un dataset ad una DropDownList
    ' Chiamata alla funzione addElemento
    Lista.DataSource = addElemento(ds, "lista")
    Lista.SelectedValue = 0
    Lista.DataValueField = "id"
    Lista.DataTextField = "lista"
    Lista.DataBind()
    ds.clear
   
    myConnection.Close()
  End If
End Sub

Private Function addElemento(ds As dataset, ordina As String)
  ' aggiungo un valore qualsiasi nei dati recuperati dal database utilizzando un Datatable ed un Datarow
  Dim dt As datatable
  dt = ds.Tables(0)
  Dim newRow As DataRow = dt.NewRow()
 
  ' creo valore(0) e testo visualizzato(1)
  newRow(0) = 0
 
  ' importante lo spazio all'inizio per apparire al primo posto
  newRow(1) = " tutti "
  dt.Rows.Add(newRow)
 
  ' riordino la tabella con un Dataview attraverso il parametro "ordina"
  Dim dv As dataview = ds.Tables(0).DefaultView
  dv.sort = ordina
 
  return dv
End Function
</SCRIPT>

Nella pagina basterà aggiungere un normale controllo dropdownlist:

<asp:dropdownlist id="Lista" Runat="server" />


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

fpsava scrive:
#541 - Aggiungere un valore neutro ad una DropDownList con il DataSet

ho provato ad implementare la tua funzione, solo che mi torna un eccezione che ti riporto di seguito:System.IndexOutOfRangeException: Impossibile ...
mercoledì 26 gennaio 2005 | 3 risposte

Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC