Un petit état de l'art des applications web de forum sur plateforme ASP.NET
Plateforme .NET
C#, VB.NET, ASP.NET... et quelques fois Mono !lundi, octobre 8 2007
Problème de charset dans un fichier .ASPX / .ASCX déployé avec VS 2005 Web Deployment Projects
Par Ronan le lundi, octobre 8 2007, 20:30
Certains caractères spéciaux sautent lors du déploiement d'un site avec VS 2005 Web Deployment Projects.
C'est notamment valable dans des UserControls .ascx inclus dans des page ASP.NET .aspx, et lorsque ces docuements utilisent des jeu de caractères diférents : Celui de l'.ascx n'est pas explicitement indiqué mais celui de l'.aspx est normalement indiqué dans
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Pour corriger ça, il faut ouvrir chaque page .aspx / .ascx en faisant un File > Advanced Save Options et choisir le bon charset (par exemple UNICODE (UTF-8 with signature) )
lundi, octobre 1 2007
Strip HTML Tags & Text
Par Ronan le lundi, octobre 1 2007, 12:52
private void nettoyer_HTML(DataTable dt)
{
int iColCount = dt.Columns.Count;
foreach (DataRow dr in dt.Rows)
{
for (int i = 0; i < iColCount; i++)
{
if (!Convert.IsDBNull(dr[i]))
{
dr[i] = Regex.Replace(dr[i].ToString(), @"<(.|\n)*?>", string.Empty);
dr[i] = HttpUtility.HtmlDecode(dr[i].ToString());
}
}
}
}
J'ai eu besoin de ça pour exporter des données infestées d'HTML (via FCKEditor) dans un fichier CSV.
samedi, juillet 21 2007
Excel et les formats de date récupérés avec C# .NET
Par Ronan le samedi, juillet 21 2007, 14:24
Dans une classe servant à lire des fichiers Excel, on utilise souvent la méthode :
Excel._WorkSheet.get_Rang(Object cell1 Object cell2)
provenant des API de Excel pour récupérer un tableau des valeurs des cellules se trouvant dans une plage entre deux cellules de début et de fin. Dans la classe gérant l'API d'Excel, la méthode correspond souvent à ceci :
public string[] Excel_GetRange(string range)
{
Excel.Range workingRangeCells =
this._excelWorksheet.get_Range(range, Type.Missing);
workingRangeCells.Select();
System.Array array =
(System.Array)workingRangeCells.Cells.Value2;
string[] arrayS = this.ConvertToStringArray(array);
return arrayS;
}
Lorsqu'on récupère la valeur d'une cellule au format date, elle est quelques fois dans un format standard peu éloquent, du genre "39326" pour une date "01/09/2007". En fait c'est la cellule d'Excel qui est au format Date, mais la valeur stockée n'est pas une date mais un entier. Cet entier est un nombre de jours : le nombre de jour entre le 30/12/1899 et la date récupérée dans Excel. Une première solution consiste à ré-écrire la méthode GetRange(), comme proposé ici. Une autre méthode consiste à faire faire à .NET le calcul rapide de la date réelle, en utilisant DateTime.AddDays();.
// Dans une classe de traitement lisant les valeurs d'Excel :
//datevalueFromExcel est la string récupérée depuis Excel via
DateTime dt = new DateTime(1899, 12, 30).AddDays(
Convert.ToDouble(datevalueFromExcel));
dispo_date = dt.ToShortDateString();
Hop !
vendredi, juillet 20 2007
C# & Regex : Matcher une date
Par Ronan le vendredi, juillet 20 2007, 13:17
Valide les dates de type
31/12/2099|||1/1/1900|||10/12/2003
Ne valident pas les dates de type :
05/11/3000|||11/13/2003|||32/04/2030
Bien sûr, le mécanisme convient aussi pour tout langage utilisant les expressions régulières.
// Source du pattern :
// Carlos R. L. Rodrigues chez Regexlib.com
string myRegex = "(^((((0[1-9])|([1-2][0-9])|(3[0-1]))|([1-9]))\x2F(((0[1-9])|"
+ "(1[0-2]))|([1-9]))\x2F(([0-9]{2})|(((19)|([2]([0]{1})))"
+ "([0-9]{2}))))$)";
Regex pattern = new Regex(myRegex);
if (pattern.IsMatch(myString))
{
DateTime myDate = Convert.ToDateTime(myString);
}mardi, juillet 3 2007
Lister les propriétés d'un objet
Par Ronan le mardi, juillet 3 2007, 17:04
Lister les propriétés d'un objet en utilisant le concept de Reflection :
using System.Reflection;
(...)
Hashtable PropertiesOfMyObject = new Hashtable();
Type t = myObject.GetType();
PropertyInfo[] pis = t.GetProperties();
for (int i=0; i<pis.Length; i++) {
PropertyInfo pi = (PropertyInfo)pis.GetValue(i);
PropertiesOfMyObject.Add(pi.Name, pi.GetValue(myObject, new object[]
{}));
}
Source : Jon Davis
mercredi, mai 23 2007
Convertir une string en valeur Enum, avec Enum.Parse
Par Ronan le mercredi, mai 23 2007, 12:15
En quelques lignes, voici comment Convertir une string en valeur Enum
public enum typeBdd
{
nothing = 0,
sqlserver = 1,
mysql = 2,
oracle = 3
}
Exemple d'utilisation : Récupérer le paramètre indiquant le type de base de donnée à utiliser pour une application. Ce paramètre peut être renseigné dans la configuration générale d'une application (ici en version .NET 2.0)
typeBdd currentBdd = (typeBdd)Enum.Parse(typeof(typeBdd), Properties.Settings.Default.currentBdd, true);jeudi, avril 12 2007
Tester le dépassement de capacité en C# .NET
Par Ronan le jeudi, avril 12 2007, 19:21
jeudi, octobre 26 2006
ASP.NET : Fermer correctement les process MS Office
Par Ronan le jeudi, octobre 26 2006, 17:37
Clore correctement les processus lancés pour les objets instanciés via les APIs de Excel.
Excel.Workbook oBook;
Excel.Worksheet oSheet;
Excel.Application oExcelApp = new Excel.Application();
oExcelApp.Visible = False
oExcelApp.DisplayAlerts = False
oBook = oExcelApp.Workbooks.Add();
oBook.Sheets.Add();
oSheet = oBook.Sheets(0);
if (oBook != null)
{
oBook.Close(true, strTemplate, oRien)
System.Runtime.InteropServices.Marshal.ReleaseComObject(oBook)
oBook = null;
}
if (oSheet != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(oSheet);
oSheet = null;
}
if (oExcelApp != null)
{
oExcelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcelApp);
oExcelApp = null;
}lundi, septembre 25 2006
Caractère aléatoire des tests en .NET
Par Ronan le lundi, septembre 25 2006, 12:55
La création et l'utilisation de données de cas de test aléatoires sont des atouts essentiels des tests logiciels. Bien que la plupart des données d'un cas de test soient composées d'entrées spécifiques dans le système testé et de valeurs/états attendus spécifiques, il est généralement souhaitable de soumettre également le système à des tests aléatoires, afin de vérifier si cela provoque une panne ou une exception en générant un grand nombre d'entrées dans l'application.
Suite : http://www.microsoft.com/france/msdn/vcsharp/execution-de-tests.mspx
mardi, avril 4 2006
Comparatif syntaxique de C#, Java et VB.NET
Par Ronan le mardi, avril 4 2006, 20:26
Un comparatif sur les différences de syntaxes entre C# et Java et VB.NET et C#. Simple et efficace. A bookmarker.
(Via DNG)
vendredi, mars 10 2006
.../aspnet_client/system_web/1-1-4322/WebUIValidation.js
Par Ronan le vendredi, mars 10 2006, 13:01
Symptôme
Lors de l'installation / ré-installation du framework .NET 1.1, les fonctionnalités Javascript des PostBack se mettent à bugger. Message d'erreur dans un MessageBox sous IE, erreur dans la console de Javascript sous Gecko.
Solution :
Ligne de commande DOS :
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis -c
samedi, novembre 26 2005
Ajax .NET : Frameworks, components
Par Ronan le samedi, novembre 26 2005, 11:18
Je note ici pour mémoire quelques liens autour de AJAX et .NET
La technique :
- L'article technique publié par Jesse James Garrett, co-fondateur d'Active Path, sur son blog en février 2005, et qui semble avoir déclenché le bouzin.
Les Web Frameworks :
Première référence incontournable : Ajax.NET Professional ("the first and free Ajax library for .NET"). Michael Schwarz développe et distribue le framework libre Ajax.NET en deux versions :
- Pour le .NET framework 1.1 http://www.schwarz-interactive.de
- Pour le .NET framework 2.0 : http://dotnet2.schwarz-interactive.de
Tout ce qu'il faut pour construire ses propres userControls ? la sauce Ajax, avec tutoriels, doc et démos.
Mickael Schwarz anime également le Google group Ajax.NET Professional et son propre devblog : Ajax.NET Professional.
Bitkraft Web Framework : Un autre framework publié par TIGGR en LGPL GNU Lesser Public License. Bien documenté et avec des exemples intéressant, il semble un peu moins abouti que le précédent, mais il donne les outils essentiels pour faire de l'Ajax en .NET.
AJAX Was Here : Un double article sur CodeProject de Bill Pierce [1]
Daniel Zeiss' comparison of AJAX frameworks for ASP.NET : 10 frameworks Ajax pour ASP.NET comparés.
Les Composants Web :
Webui30.componentart.com : Une librairie de composants ASP.NET boostés avec Ajax. Compter 799 $ la licence.
Bonus :
La rubrique .NET d'Ajaxian.com
Un article consacré à AJAX sur A List Appart
The Hows and Whys of Degradable Ajax : un article de l'excellent particletree.com.
L'article qui casse tout : Ajax est déj? obsolète
Notes
[1] Qu'est-ce que c'est mal foutu, MSN Space, quand même...
mercredi, novembre 16 2005
Commenter et documenter son code
Par Ronan le mercredi, novembre 16 2005, 21:22
E-Learning gratuits pour Visual Studio 2005
Par Ronan le mercredi, novembre 16 2005, 21:15
https://www.microsoftelearning.com/visualstudio2005/
Attention : (semble ne pas fonctionner correctement avec FireFox...)
.NET : Numéroter les lignes (items) d'un datagrid, compatible avec la pagination des résultats
Par Ronan le mercredi, novembre 16 2005, 20:16
Pour numéroter les résultats listés dans un datatagrid, la méthode consistant utilisant les propriétés ID ou IDClient de l'objet Item convient si les résultats ne s'affichent que sur une seule page, mais ne convient pas si on utilise la pagination. En effet, l'id de chaque ligne est alors toujours recalculé partir du premier item de chaque page qui est systématiquement remis zéro. La numérotation ne se poursuit donc pas de page en page...
Voici Une solution au problème, permettant de garder une numérotation des résultats dans le datagrid qui est conservée de page en page :
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, _ & ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound If Not (e.Item.DataItem Is Nothing) Then Dim L As Label Dim S As String myLabel = CType(e.Item.Cells(0).FindControl("id_numerotation"), Label) myString = CType(e.Item.DataSetIndex + 1, String) myLabel.Text = myString End If End Sub
(via aspfr.com)
vendredi, septembre 30 2005
NewWindow3 Event in SP2 : No more pop-windows in your javascript...
Par Ronan le vendredi, septembre 30 2005, 20:16
(Suite ce billet récent)
When you get a click, the first new window opened in the next 2500 ms is allowed; everything else is blocked. But even this is not foolproof. Windows® XP Service Pack 2 contains a new event, NewWindow3, which adds a parameter that includes flags indicating whether or not mshtml.dll thinks a pop-up window is the result of a user-initiated action. Using that flag would be the optimal solution, once you upgrade to Windows XP Service Pack 2.
Source : MSDN, July 2004
jeudi, septembre 29 2005
Datagrid et dropdownlists dynamiques
Par Ronan le jeudi, septembre 29 2005, 21:57
(Enfin !) une solution pour des dropdownlists dynamiques dans un datagrid. Valable pour tous les types d'items (mode edit, footer,...).
jeudi, septembre 15 2005
Développement en .NET : dix sites incontournables
Par Ronan le jeudi, septembre 15 2005, 23:28
Indexel.net, dont la newsletter est une pleine de ressources, propose sa petite sélection.
lundi, août 22 2005
.NET, encoding & ISO-8859-1
Par Ronan le lundi, août 22 2005, 12:55
.NET Framework doesn't suppport natively the 8859-1 characters encoding (also known as ISO-Latin1). Just founded a solution and some tips about it.
Le framework .NET 1.1 ne permet pas par défaut de créer un encodage en ISO-Latin1 (ISO 8859-1). Voici une solution et quelques pistes.
« billets précédents - page 1 de 3