Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

DataSourceView.ExecuteSelect, méthode

Obtient une liste de données du stockage des données sous-jacent.

Espace de noms :  System.Web.UI
Assembly :  System.Web (dans System.Web.dll)

protected internal abstract IEnumerable ExecuteSelect(
	DataSourceSelectArguments arguments
)

Paramètres

arguments
Type : System.Web.UI.DataSourceSelectArguments
DataSourceSelectArguments utilisé pour demander des opérations sur les données, autres que la récupération des données de base.

Valeur de retour

Type : System.Collections.IEnumerable
Liste de données IEnumerable issue du stockage des données sous-jacent.

La méthode ExecuteSelect est appelée pour récupérer des données du magasin de données sous-jacent et le retourner comme un objet IEnumerable. Tous les contrôles de source de données prennent en charge la récupération de données de leur stockage des données sous-jacent, même si d'autres opérations telles que l'insertion et le tri ne sont pas prises en charge. Un contrôle lié aux données pouvant à tout moment demander une liste de données, suite à un événement DataSourceChanged ou à un appel de méthode DataBind, la récupération de données doit être effectuée à la demande.

L'exemple de code suivant montre comment substituer la méthode ExecuteSelect dans une classe qui étend la classe DataSourceView. CsvDataSourceView ouvre un fichier csv (comma-separated value), l'analyse ligne par ligne et crée un objet DataTable et un objet DataView pour stocker les données en mémoire. Enfin, une expression de tri est appliquée, si l'objet DataSourceSelectArguments en fournit une, et l'objet DataView est retourné comme une instance de IEnumerable. Cet exemple de code fait partie d'un exemple plus complet fourni pour la classe DataSourceView.


// Get data from the underlying data source.
// Build and return a DataView, regardless of mode.
protected override IEnumerable ExecuteSelect(DataSourceSelectArguments selectArgs) {
    IEnumerable dataList = null;
    // Open the .csv file.
    if (File.Exists(this.SourceFile)) {
        DataTable data = new DataTable();

        // Open the file to read from.
        using (StreamReader sr = File.OpenText(this.SourceFile)) {
            // Parse the line
            string s = "";
            string[] dataValues;
            DataColumn col;

            // Do the following to add schema.
            dataValues = sr.ReadLine().Split(',');
            // For each token in the comma-delimited string, add a column
            // to the DataTable schema.
            foreach (string token in dataValues) {
                col = new DataColumn(token,typeof(string));
                data.Columns.Add(col);
            }

            // Do not add the first row as data if the CSV file includes column names.
            if (! IncludesColumnNames)
                data.Rows.Add(CopyRowData(dataValues, data.NewRow()));

            // Do the following to add data.
            while ((s = sr.ReadLine()) != null) {
                dataValues = s.Split(',');
                data.Rows.Add(CopyRowData(dataValues, data.NewRow()));
            }
        }
        data.AcceptChanges();
        DataView dataView = new DataView(data);
        if (selectArgs.SortExpression != String.Empty) {
            dataView.Sort = selectArgs.SortExpression;
        }
        dataList = dataView;
    }
    else {
        throw new System.Configuration.ConfigurationErrorsException("File not found, " + this.SourceFile);
    }

    if (null == dataList) {
        throw new InvalidOperationException("No data loaded from data source.");
    }

    return dataList;
}

private DataRow CopyRowData(string[] source, DataRow target) {
    try {
        for (int i = 0;i < source.Length;i++) {
            target[i] = source[i];
        }
    }
    catch (System.IndexOutOfRangeException) {
        // There are more columns in this row than
        // the original schema allows.  Stop copying
        // and return the DataRow.
        return target;
    }
    return target;
}


.NET Framework

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft