Parcourir une GridView contenant des TemplateField

 01/01/2019 |   Admin |  C#


Cet exemple permet de créer une gridView, puis de parcourir ligne à ligne ses valeurs pour enfin les afficher.

Page aspx :

<table width="100%">
  <tr>
    <td align="center">
<asp:GridView runat="server"
  ID="gvList"
  AutoGenerateColumns="false"
  Width="400px">
   <Columns>
    <asp:TemplateField HeaderText="Nom" ItemStyle-Width="50%">
     <ItemTemplate>
             <asp:TextBox runat="server"
  ID="txtNom"
  Width="98%" />
           </ItemTemplate>
          </asp:TemplateField>
          <asp:TemplateField HeaderText="Prénom" ItemStyle-Width="50%">
            <ItemTemplate>
              <asp:TextBox runat="server" ID="txtPrenom" Width="98%"></asp:TextBox>
            </ItemTemplate>
          </asp:TemplateField>
         </Columns>
        </asp:GridView>
      </td>
    </tr>
    <tr>
      <td align="center">
         <asp:Button runat="server"
   ID="btnValid"
   Text="Valider"
   OnClick="btnValid_Click" />
       </td>
    </tr>
    <tr>
      <td align="center">
          <asp:TextBox TextMode="MultiLine"
     ID="txtResult"
     runat="server"
     Height="200px"
     Width="60%" />
      </td>
    </tr>
</table>

CodeBehind :

protected void Page_Load(object sender, EventArgs e)
{
   if (!IsPostBack)
   {
// Cré
...

Lire >>

Concaténer deux champs dans le même 'Eval' d'une GridView

 01/01/2019 |   Admin |  ASP MVC


<%# String.Concat(Eval("NomCol1"),Eval("NomCol2")) %>

Lire >>

Détecter l'état d'un CollapsiblePanel, collasped ou expand

 01/01/2019 |   Admin |  Javascript


// Est il est fermé

if (cpe.ClientState == "true")
{
 
}

 

// Est il est ouvert

if (cpe.ClientState == "false")
{
 
}

Lire >>

View state persistant

 01/01/2019 |   Admin |  C#


Voici le moyen de rendre persistant un view state lors de différents postback au sein de la même page :
public string TheProperty
{
get
    {
string text = (string)ViewState["TheProperty"];
if (text != null)
return text;
else
return string.Empty;
}
set
{
ViewState["TheProperty"] = value;
}
}

Lire >>

Récupérer les détails d'un utilisateur depuis l'Active Directory

 01/01/2019 |   Admin |  C#


Activer les roles dans le web.config (System.Web) :

<authentication mode="Windows" /> 

<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider" />
Ajouter les références suivantes :
using System.DirectoryServices;
using System.DirectoryServices.AccountManagement;

1) Récupérer le login de l'utilisateur :

public static string GetUserName()
{
return HttpContext.Current.User.Identity.Name;
}

 

2) Récupérer le prénom de l'utilisateur :

public static string GetFirstName()
{
string principal = GetUserName();
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
UserPrincipal user = UserPrincipal.FindByIdentity(ctx,principal);
return user.GivenName;
}

A partir de cette méthode, tout est récupérable, il suffit de changer le GivenName par la propriété correspondante.

 

3) Tester un droit pour l'utilisateur connecté :

Après avoir ajouté cette chaine dans le web.config :
<appSettings>
……
<add key="admin" value="Domaine\Droit"/>
</appSettings> 
public static bool UserIsAdmin()
{
return Roles.IsUserInRole(ConfigurationManager.AppSettings["admin"]);
}

Lire >>

BlogEngine - Remplacer la page Default.aspx

 01/01/2019 |   Admin |  C#


Si l'on modifie la page Default.aspx, la redirection des catégories et des tags ne fonctionnera plus.

Cela se produit si l'on désire intégrer un site web au blog par exemple.

Solution :

Dans le code les redirections se font vers la page Default, il faut donc renommer ces redirections vers la nouvelle page.

On va dire que la nouvelle page se nomme blog.aspx et que la page Default.aspx n'est plus lié au blog.

1) Il faut travailler sur le code source de BlogEngine :

- Ouvrir le fichier /Web/HttpModules/UrlRewrite.cs

- Renommer default.aspx par blog.aspx, SAUF le bloc à partir de la ligne 238 (pour la version 2.5, à 8 endroits environ) :

else 

{

string newUrl = url.Replace("Default.aspx", "default.aspx");  // fixes a casing oddity on Mono
int defaultStart = url.IndexOf("default.aspx", StringComparison.OrdinalIgnoreCase);
newUrl = Utils.ApplicationRelativeWebRoot + url.Substring(defaultStart);
 
context.RewritePath(newUrl);
}

- Rajouter devant ?tag le nom du nouveau fichier, à la ligne 198 : ?tag remplacer par : blog.aspx?tag

- Ouvrir le fichier /Web/Controls/PostViewBase.cs

- Rajouter devant ?tag le nom du nouveau fichier, à la ligne 343 : ?tag remplacer par blog.aspx?tag

- Compiler la solution, remplacer la DLL BlogEngine.Core.dll par la nouvelle

...

Lire >>

Simple Client/Serveur TCP

 01/01/2019 |   Admin |  C#

Tags: Réseau

Voici les bases pour implémenter un client/serveur TCP en c# :

Le client :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.IO;
 
public class Client
{
    public static void Main(string[] args)
    {
        try
        {
            string adresseIp = "Votre IP";
            int port = 8001;
 
            TcpClient client = new TcpClient();
            Console.WriteLine("Connexion.....");
            client.Connect(adresseIp, port);
            Console.WriteLine("Connecté");
           
            string chaineAenvoyer = string.Empty;
            while (chaineAenvoyer.ToLower() != "quit")
            {
                Console.WriteLine("\nChaine a envoyer : ");
                chaineAenvoyer = Console.ReadLine();
 
                Stream stream = client.GetStream();
                ASCIIEncoding encoding = new ASCIIEncoding();
 
                byte[] byteAenvoyer = encoding.GetBytes(chaineAenvoyer);
                Console.WriteLine("Transmission.....");
                stream.Write(byteAenvoyer, 0, byteAenvoyer.Length);
                byte[] byteEnvoyes = new byte[100];
                int nbBytes = stream.Read(byteEnvoyes, 0, 100);
                for (int i =
...

Lire >>

Calculer le temps d'exécution d'une méthode

 01/01/2019 |   Admin |  C#


using System.Diagnostics;

Stopwatch sw = new Stopwatch();
sw.Start();

« La méthode à exécuter »

sw.Stop();

Console.WriteLine("Temps d'éxécution : " + sw.Elapsed.Minutes + " minutes, " + sw.Elapsed.Seconds + " secondes, " + sw.Elapsed.Milliseconds + " milliseconds");

Lire >>