Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

4 septembre 2007 2 04 /09 /septembre /2007 00:43
[ASP.NET] – Quelques astuces

1 Conserver la position dans la page une fois celle-ci rechargée
  

Il suffit d’ajouter l’attribut  MaintainScrollPositionOnPostback="true" dans la directive de la page
<%@ Page Language="C#" MasterPageFile="~/maquette.master" Trace="true" AutoEventWireup="true" CodeFile="MaintainScrollPositionOnPostbackDemo.aspx.cs" Inherits="MaintainScrollPositionOnPostbackDemo" Title="Untitled Page" MaintainScrollPositionOnPostback="true" %>
<asp:Content ID="Content1" ContentPlaceHolderID="cphContenu" Runat="Server">
</asp:Content>
 
2 Tracer une page ou le site entier
A -Trace : de la page
Il suffit d’ajouter l’attribut Trace (réglé à true) dans la directive de la page désirée
<%@ Page Language="C#" MasterPageFile="~/maquette.master" Trace="true" AutoEventWireup="true" CodeFile="MaintainScrollPositionOnPostbackDemo.aspx.cs" Inherits="MaintainScrollPositionOnPostbackDemo" Title="Untitled Page" MaintainScrollPositionOnPostback="true" %>
<asp:Content ID="Content1" ContentPlaceHolderID="cphContenu" Runat="Server">
</asp:Content>
 
B -Du site
Dans le fichier de configuration principal  web.config du site(à la racine du site
<system.web>
 <trace enabled="true" traceMode="SortByCategory" localOnly="true"/>
(d’autres attributs sont disponibles tells requestLimit )
Il suffit ensuite d’aller à la page trace.axd du site (ce qui donne une url du type http://www.monsite.com/trace.axd ) pour avoir les informations 

Note : on peut bien entendu ajouter ses propres traces(exemple : Trace.Write("ma trace");)
3 Custom DataBound control
 
Créer un control web personnalisé qui tire parti des datasources (AccessDataSource,SqlDataSource ,etc.) de ASP.NET 2.0
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
 
namespace ControlLibrary
{
    [ToolboxData("<{0}:SimpleDataBoundColumn runat=server></{0}:SimpleDataBoundColumn>")]
    public class SimpleDataBoundColumn : DataBoundControl
    {
        public string DataTextField
        {
            get
            {
                object o = ViewState["DataTextField"];
                return ((o == null) ? string.Empty : (string)o);
            }
            set
            {
                ViewState["DataTextField"] = value;
                if (Initialized)
                {
                    OnDataPropertyChanged();
                }
            }
        }
        protected override void PerformSelect()
        {
            // si DataSourceID du control n'est pas définie
            if (!IsBoundUsingDataSourceID)
                this.OnDataBinding(EventArgs.Empty);
 
            GetData().Select(CreateDataSourceSelectArguments(),this.OnDataSourceViewSelectCallback);
 
            RequiresDataBinding = false;
            MarkAsDataBound();
 
            // declenchement evenement databound
            OnDataBound(EventArgs.Empty);
        }
 
        private void OnDataSourceViewSelectCallback(IEnumerable retrievedData)
        {
            // DataSourceID du control est définie
            if (IsBoundUsingDataSourceID)
                OnDataBinding(EventArgs.Empty);
 
            PerformDataBinding(retrievedData);
        }
 
        protected override void PerformDataBinding(IEnumerable retrievedData)
        {
            base.PerformDataBinding(retrievedData);
            int index = 0;
 
            if (retrievedData != null)
            {
                Table table = new Table();
                table.BorderWidth = 1;
 
                foreach (object dataItem in retrievedData)
                {
                    TableRow row = new TableRow();
                   
                    if (DataTextField.Length > 0)
                    {
                        TableCell cell = new TableCell();
                        cell.Text = DataBinder.GetPropertyValue(dataItem, DataTextField, null);
                        row.Cells.Add(cell);
                    }
                    else
                    {
                        PropertyDescriptorCollection propertyDescriptors = TypeDescriptor.GetProperties(dataItem);
                       
                        // création du header
                        if (index == 0)
                        {
                            TableRow headerRow = new TableRow();
                            headerRow.BackColor = System.Drawing.Color.LightGray;
                            foreach (PropertyDescriptor propertyDescriptor in propertyDescriptors)
                            {
                                TableCell cell = new TableCell();
                                cell.Text = propertyDescriptor.Name;
                                headerRow.Cells.Add(cell);
                            }
                            table.Rows.Add(headerRow);
                            index += 1;
                        }
                        
                        // création des lignes de données
                        if (propertyDescriptors.Count >= 1)
                        {
                            foreach (PropertyDescriptor propertyDescriptor in propertyDescriptors)
                            {
                                if (propertyDescriptor.GetValue(dataItem) != null)
                                {
 
                                    TableCell cell = new TableCell();
                                    cell.Text = propertyDescriptor.GetValue(dataItem).ToString();
                                    row.Cells.Add(cell);
                                }
                            }
                        }
                    }
                    table.Rows.Add(row);
                }
                this.Controls.Add(table);
            }
        }
 
 
    }
}
 
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
 
<%@ Register Assembly="ControlLibrary" Namespace="ControlLibrary" TagPrefix="cc1" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Page sans titre</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <cc1:SimpleDataBoundColumn ID="SimpleDataBoundColumn1" runat="server" DataSourceID="SqlDataSource1"
            DataTextField="" />
        &nbsp;
        <br />
        <br />
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ContactDBConnectionString %>"
            SelectCommand="SELECT [ContactID], [ContactName], [ContactFirstName], [ContactAge], [ContactCategoryID] FROM [Contact]">
        </asp:SqlDataSource>
        &nbsp;<br />
        <br />
       
    </div>
    </form>
 


databound.JPG
http://msdn2.microsoft.com/fr-fr/library/ms366539(VS.80).aspx

Partager cet article

Repost 0
Published by Romagny13 - dans ASP.NET
commenter cet article

commentaires