Aggiungere un valore neutro ad una DropDownList con il DataSet

di Mauro Bennici, in UserScript, ASP.NET, ADO.NET,

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" />

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