Bonjour à tous,

je suis actuellement en cours de développement d'une application d'envoi de SMS.
Il me reste un dernier point à terminer concernant la journalisation des envois.

Lorsqu'un utilisateur envoi un SMS, un fichier XML est complété avec les envois du sms (numéro de tel, contenu du sms, date d'envoi, type d'envoi (si planifié ou si envoi immédiat) et l'utilisateur qui a envoyé le SMS.

voici comment je génère le fichier:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
XmlDocument doc = new XmlDocument();
                doc.Load("CHEMIN DU FICHIER XML");
                XmlElement details = doc.CreateElement("Details");
                XmlAttribute utilisateur = doc.CreateAttribute("Utilisateur");
                XmlAttribute numtel = doc.CreateAttribute("NumTel");
                XmlAttribute SMScontent = doc.CreateAttribute("SmsContent");
                XmlAttribute date = doc.CreateAttribute("Date");
                XmlAttribute sendtype = doc.CreateAttribute("SendType");
                utilisateur.Value = Page.User.Identity.Name;
                numtel.Value = TextBox2.Text;
                SMScontent.Value = TextArea3.Value;
                sendtype.Value = "Planifié";
                date.Value = Calendar1.SelectedDate.AddHours(int.Parse(DropDownList3.Text)).AddMinutes(int.Parse(DropDownList4.Text)).ToString();
                details.Attributes.Append(utilisateur);
                details.Attributes.Append(numtel);
                details.Attributes.Append(SMScontent);
                details.Attributes.Append(date);
                details.Attributes.Append(sendtype);
                doc.DocumentElement.AppendChild(details);
                doc.Save("CHEMIN DU FICHIER XML");
Le fichier xml se génère correctement et ressemble à ceci:

Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<Envois>
  <Details Utilisateur="user1" NumTel="06XXXXXXX" SmsContent="Modèle 3" Date="12/04/2019 09:19:29" SendType="Immédiat" />
  <Details Utilisateur="user2" NumTel="06XXXXXXX" SmsContent="Personnalisé" Date="12/04/2019 09:20:00" SendType="Planifié" />
</Envois>

J'ai créé une page sur l'application qui permet d'afficher ce fichier XML via un gridview et une xmlDataSource qui va récupérer le contenu du fichier xml et l'affiche dans un tableau.
Je souhaiterais donc pouvoir filtrer l'affichage de ce fichier en affichant uniquement les lignes concernant un user en particulier.
Pour se faire, je pensais utiliser la valeur de:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Page.User.Identity.Name
Quelqu'un pourrait me filer un petit coup de main car je ne comprend pas le fonctionnement des requêtes vers les fichiers XML, j'ai essayé de faire ceci mais ça ne fonctionne pas et je ne comprend pas pourquoi :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 string filePath = "CHeMIN FICHIER XML";
            DataSet ds = new DataSet();
            ds.ReadXml(filePath);
            var utilisateurs= ds.Tables[0].AsEnumerable();
            var query = from utilisateur in utilisateurs
                        where utilisateur.Field<string>("Utilisateur") == Page.User.Identity.Name
                        select utilisateur;
            GridView1.DataSource = query.ToList();
            GridView1.DataBind();

Merci d'avance pour votre aide


EDIT:
J'ai trouvé un moyen en dur de faire ce que je souhaite en utilisant une expression XPATH au niveau du XmlDataSource:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
XPath="Envois/Details[@Utilisateur='user1']">
ceci me renvoit bien uniquement les enregistrements avec Utilisateur = User1 mais j'aimerais le rendre dynamique en fonction de l'utilisateur qui est connecté à l'application (authentification Windows) pour cela j'ai essayé d'intégrer une variable à la déclaration de l'expression XPATH au niveau du xmldatasource mais ça ne marche pas...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
XPath="Envois/Details[@Utilisateur='<%Page.User.Identity.Name%>']">
Je pense que je ne suis pas loin.. si jamais quelqu'un connait un moyen d'éxecuter du C# dans de l'asp... je suis preneur... j'ai essayé pas mal de combinaisons différentes rien ne prend...

Merci d'avance !