J'ai créé un datatable où une colonne est spécifiée comme type URI. C'est parce que je veux plus tard utiliser la table comme source pour la liaison à une grille dans WPF, générant automatiquement une colonne de la grille avec un lien hypertexte. Comment puis-je remplir cette base de données à partir de ma base de données SQL Server?Comment remplir une table de données avec une colonne de type URI de SQL?
Voici mon exemple de code: -
_tblMarketPlaces = new DataTable("MarketPlaces");
_tblMarketPlaces.Columns.Add("MarketPlaceID");
_tblMarketPlaces.Columns.Add("MarketPlaceIdentifier");
_tblMarketPlaces.Columns.Add("MarketPlaceName");
_tblMarketPlaces.Columns.Add("MarketPlaceHomeUri",typeof(Uri));
_tblMarketPlaces.Columns.Add("DisplayPriorityOrder");
_tblMarketPlaces.Clear();
_tblMarketPlaces.Rows.Add(0, "N/A", "Unknown", DBNull.Value, 0);
SqlConnection DB = ArtContentManager.Static.Database.DBReadOnly;
string sqlSelectMarketPlaces = "Select * from MarketPlaces Order By DisplayPriorityOrder";
SqlCommand cmdSelectMarketPlaces = new SqlCommand(sqlSelectMarketPlaces, DB);
SqlDataAdapter sdaMarkePlace = new SqlDataAdapter(cmdSelectMarketPlaces);
sdaMarkePlace.Fill(_tblMarketPlaces);
Le problème est que la dernière déclaration de remplissage échoue parce que le type de données de MarketPlaceHomeUri est nvarchar sur la base de données et n'est pas reconnu comme un URI. Est-il possible de persuader le DataAdapter de convertir les données dans le remplissage? [Je sais qu'une autre approche serait d'utiliser le datatable simplement pour le champ, puis de formater la colonne explicitement dans mon WPAM Xaml, mais je voudrais utiliser des colonnes autogénérées là-bas et cela semble possible si seulement je peux charger le données dans le datatable]
Pas très élégant car il y a des dépendances sur l'ordre des données dans le SQL, la table de données et la logique de gestion des erreurs qui sapent le point d'autogénération des colonnes et le rendent plus désordonné que la structure de la table changements, mais il y a probablement des façons de le rendre un peu plus générique. Aussi, si vous attendez une erreur pour chaque ligne, est-ce vraiment un bon design? Mais c'est une solution possible au moins ... – DMFW