asp tutorials, asp.net tutorials, sample code, and Microsoft news from 15Seconds
Data Access  |   Troubleshooting  |   Security  |   Performance  |   ADSI  |   Upload  |   Email  |   Control Building  |   Component Building  |   Forms  |   XML  |   Web Services  |   ASP.NET  |   .NET Features  |   .NET 2.0  |   App Development  |   App Architecture  |   IIS  |   Wireless
 
Pioneering Active Server
 Power Search








Active News
15 Seconds Weekly Newsletter
• Complete Coverage
• Site Updates
• Upcoming Features

More Free Newsletters
Reference
News
Articles
Archive
Writers
Code Samples
Components
Tools
FAQ
Feedback
Books
Links
DL Archives
Community
Messageboard
List Servers
Mailing List
WebHosts
Consultants
Tech Jobs
15 Seconds
Home
Site Map
Press
Legal
Privacy Policy
internet.commerce














internet.com
IT
Developer
Internet News
Small Business
Personal Technology
International

Search internet.com
Advertise
Corporate Info
Newsletters
Tech Jobs
E-mail Offers

HardwareCentral
Compare products, prices, and stores at Hardware Central!

Implementing Paging and XSLT Extensions Using XSLT in .NET - Part 1
By Thiru Thangarathinam
Rating: 4.2 out of 5
Rate this article


  • email this article to a colleague
  • suggest an article

    Introduction

    When you have to display a large number of records, the common practice is to use data paging so the information can be presented in a more user-friendly manner. There are many solutions one can use to implement such a system, and each of them has its own advantages and disadvantages. One of the excellent ways of implementing this solution is using XML and XSL. In this article, I will outline an approach in which we will use the XSLT support provided by .NET to create this solution. This solution differs from others because of the inherent advantages of using XML and XSL. One of the main benefits of XML is that it separates data from the presentation. By combining XML data with an XSL Transformation (XSLT) stylesheet, you can dynamically transform the XML data and present the information in any format you want. Before we move on to talk about the paging solution using XSL, let us take a moment to understand XSL and XSLT support provided by the .NET Framework.

  • download source code

    XSLT is an XML-based language designed to transform one XML document into another XML document or an XML document into any other structured document. XSLT uses the XML Path (XPath) language to perform queries on an XML document in order to select a particular part of the document. To transform an existing XML structure into one that can be processed, we use an XSLT processor and an XSLT stylesheet (XSLT file) that defines how to carry out the transformation.

    For more information on XSLT, please take a look at the following link from MSDN.

    Enhancing XSL

    In .NET, all the XSLT related classes could be found in the following namespaces:

    • System.Xml.Xsl - Contains a set of classes that are used to perform such functionalities as transforming the XML document into the desired format, passing parameters to the XSL stylesheet, and so on.
    • System.Xml.XPath - Contains a set of classes that represent the XPath parser, which is used for parsing and evaluating XPath expressions.

    Apart from the above-mentioned namespaces, the .NET Framework also comes bundled with a server side control named ASP: XML. This control does a great job of abstracting away the transformation details by exposing properties that simply need to be set to proper values to carry out the transformation.

    In this section we will provide you with an overview of some of the important classes in the above-listed namespaces that are crucial to performing XSLT processing in .NET.

    System.Xml.Xsl namespace

    System.Xml.Xsl namespace consists of all the classes and interfaces that are necessary to carry out XSLT transformations. The following list shows some of the important classes found in this namespace.

    • XslTransform - This class uses XML data and an XSL stylesheet as inputs and produces the output in desired format by applying the XSL transformations to the XML data.
    • XsltArgumentList - Exposes methods that not only allow us to pass parameters to the XSL stylesheet but also associate an object with the namespace URI, thereby making it possible to invoke the methods of an object directly from a stylesheet.
    • XsltException - If any exception occurs during the transformation process, XsltException provides us with detailed information about the exceptional condition.

    When transforming XML data into any other format using XslTransform class, you would typically want to perform the following steps.

    • Create an XPathDocument object, specifying the XML data to be loaded from any of the data store.
    • Instantiate an XslTransform object and then invoke its Load method to load the XSLT file into the XslTransform object.
    • If you want to pass parameters to the XSLT stylesheet, then create an instance of XsltArgumentList object and invoke its AddParam method, passing to it the information about the parameters that are to be added.
    • Finally, invoke the transform method.

    We will see an example of this in action in the later stages of this article when we look at the implementation of these classes.

    System.Xml.XPath namespace

    XPath (XML Path Language) is a graph navigation language that provides filtering and addressing of data in an XML document and is mainly used to select a set of nodes from an XML document. The .NET Framework implementation of XPath conforms to the World Wide Web Consortium XPath Version 1.0 specification. The System.Xml.XPath namespace encapsulates the functionalities of an XPath processing engine that is used to parse and evaluate XPath expressions. Classes that aid us in performing these operations are:

    • XPathDocument - Allows us to create robust and scalable applications by providing a fast and high performance cache that is fully utilized to perform XML transformation using XSLT.
    • XPathExpression - This class represents an XPath expression that is compiled and that can be subsequently reused for further node selections.
    • XPathNavigator - Provides a cursor-style, read-only navigation model to enumerate the contents of an XML document that is generated using any one of the following classes or their derived classes. XmlNode or XPathDocument. If you look at the hierarchy of the classes related to XML and XSL processing, you could see that only these two classes derive from IXPathNavigable interface. However, it is important to note that XmlDocument XmlDataDocument classes also inherit the functionality of IXPathNavigable interface since they derive from XmlNode class (which in turn derives from IXPathNavigable interface). It is the CreateNavigator method of this interface that returns the XPathNavigator for an XML document.
    • XPathNodeIterator - Allows us to enumerate through a group of nodes that are selected by using such methods as Select, SelectAncestors, SelectChildren, and SelectDescendants.

    Apart from the above-listed classes, the System.Xml.XPath namespace also contains the IXPathNavigable interface. As mentioned already, this interface exposes the CreateNavigator method through which we can get reference to the XPathNavigator object.

    Let us say, for instance, you have XML data and you want to filter that data to display only the desired information. To accomplish this, you would use the above-mentioned classes in the following manner.

    • Create an XPathDocument object, specifying the XML data to be loaded from any of the data stores.
    • Call the CreateNavigator method to get reference to the XPathNavigator object.
    • Create an XPathExpression object, passing in the XPath expression that can filter the desired data. The Compile method of the XPathNavigator allows us to perform this.
    • Invoke the Select method of the XPathNavigator object and pass in the XPathExpression object (created in the previous step) as an argument. This method returns the XPathNodeIterator object that represents the set of selected nodes that match the specified criteria.
    • Finally, loop through the XPathNodeIterator object to display its contents.

    Implementation

    Now that we have had an overview of all the important classes and interfaces, let us kick off our demonstration by considering an example that leverages the classes found in the System.Xml.Xsl namespace. We will split the implementation into the following three sections, with each section building on the functionality of the previous section.

    • Transforming and displaying data using XslTransform class
    • Adding paging capability to the output
    • Customizing the output of the displayed records using XSLT Extensions

    We will start off by looking at the first part.

    How to transform XML data using XslTransform class

    As we already know, the XslTransform class exists in the System.Xml.Xsl namespace. We can use this class to transform XML data from any store as long as the data store implements the IXPathNavigable interface. Since the XslTransform class works based on a streaming base model, it is also possible to combine several transforms together. This capability allows us to design powerful and flexible applications. An XSL stylesheet that needs to be transformed using the XslTransform class must have the following namespace declaration included as part of its xsl:stylesheet declaration.

    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

    Before we take a look at the code sample, let us have a brief look at the methods of the XslTransform class that we will be using in this article.

    • Load - This method has several overloads and it provides for loading of an XSL stylesheet into an XslTransform object from any one of the following resources: a string that specifies the URL, from an XmlReader object, or from an XPathNavigator object, and so on.
    • Transform - Allows us to transform the XML data into a specified format using the stylesheet that is already loaded.

    For this example, we will create a simple Web form that displays all the records in the Products table of the Northwind database using an XSLT stylesheet. For this reason, let us create a new ASP.NET Web application named CustomPagingXSL using Visual C#. Once the project is created, add a new ASP.NET Web form named XslTransformExample1.aspx to the project. In the Page_Load event of the Web form, add the following lines of code.

    private void Page_Load(object sender, System.EventArgs e)

    {                   

          

           //Retrieve the connection string from the Web.config file

    string connString = System.Configuration.ConfigurationSettings.AppSettings["connectionString"];

           SqlConnection sqlConn = new SqlConnection(connString);

           //Open the connection to the database

           sqlConn.Open();

           //Instantiate the SqlCommand object and pass the query to be executed

    SqlCommand sqlCommand = new SqlCommand("Select * from Products for xml auto,elements",sqlConn);              

           //Execute the query

           XmlReader reader = sqlCommand.ExecuteXmlReader();                   

           //Associate the XmlReader object with the XPathDocument object

           XPathDocument xpathDoc = new XPathDocument(reader);

           //Close the connection to the database

           sqlConn.Close();

                                            

           XslTransform transform = new XslTransform();

           //Load the XSL stylsheet into the XslTransform object

           transform.Load(Server.MapPath("xmlpaging.xsl"));

           //Invoke the transform method

    transform.Transform(xpathDoc,null,Response.Output);

    }

    In the above lines of code, we retrieve the data (in the form of XML) from the products table and then apply an external XSLT stylesheet (named xmlpaging1.xsl) on the XML data to emit HTML. Let us walk through the above code.

    We start by retrieving the connection string from the Web.config file. The Web.config file contains the following entry to store the connection string.

    <appSettings>

                  <add key="connectionString"

    value="server=localhost;database=northwind;uid=sa;pwd=thiru;">

    </add>

           </appSettings>

    Once the connection string is retrieved into a local variable, we then pass it to the constructor of the SqlConnection object. Then we open the connection by invoking the Open method of the SqlConnection object.

           SqlConnection sqlConn = new SqlConnection(connString);

           //Open the connection to the database

           sqlConn.Open();

    Here we create an instance of the SqlCommand object passing in the SQL command to be executed and the SqlConnection object as arguments. As you can see from the code, we use the FOR XML clause in the SQL query to retrieve XML data directly from the database.

           //Instantiate the SqlCommand object and pass the query to be executed

    SqlCommand sqlCommand = new SqlCommand("Select * from Products for xml auto,elements",sqlConn);              

    Then we execute the SQL query by invoking the ExecuteXmlReader method of the SqlCommand object and assign the returned XML stream to an XmlReader object.

           //Execute the query

           XmlReader reader = sqlCommand.ExecuteXmlReader();                   

    Now we load the XML data into an XPathDocument object by passing in the XmlReader object to the constructor of the XPathDocument object.

           //Associate the XmlReader object with the XPathDocument object

           XPathDocument xpathDoc = new XPathDocument(reader);

           //Close the connection to the database

           sqlConn.Close();

    Here we create an instance of the XslTransform object and then load the XSL stylesheet into an XslTransform object by invoking the Load method of the XslTransform object.

           XslTransform transform = new XslTransform();

           //Load the XSL stylsheet into the XslTransform object

           transform.Load(Server.MapPath("xmlpaging.xsl"));

    Finally we transform the XML data to HTML by invoking the Transform method of the XslTransform object passing in the previously created XPathDocument and the Response.Output object as arguments.

           //Invoke the transform method

    transform.Transform(xpathDoc,null,Response.Output);                    

    Now that we have had a look at the code that carries out the transformation, let us take a look at the code of the XSLT stylesheet xmlpaging1.xsl.

    <?xml version="1.0" ?>

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="html" />

    <xsl:template match="/">

    <HTML>

    <HEAD>

    <TITLE> XSLT In .NET </TITLE>

    </HEAD>

    <BODY>

    <span align="center" style="color:Blue;background-color:White;font-

           weight:bold;height:25px;width:634px;Z-INDEX: 102; LEFT: 203px;

    POSITION: absolute; TOP: 69px"> This is a sample Application to illustrate Paging in .NET

    </span>

     

    <table style="Z-INDEX: 101; LEFT: 171px; WIDTH: 501px; POSITION:

    absolute; TOP: 125px; HEIGHT: 322px" border="1" cellSpacing="1" cellPadding="1">

    <center>

           <xsl:for-each select="//Products">

    <xsl:element name="tr">

    <xsl:element name="td">                               

                               <xsl:value-of select="ProductID" />

    </xsl:element>

    <xsl:element name="td">

                                <xsl:value-of select="ProductName" />

                         </xsl:element>

                         <xsl:element name="td">

                               <xsl:attribute name="align">center</xsl:attribute>

                               <xsl:value-of select="SupplierID" />

                         </xsl:element>

                         <xsl:element name="td">

                               <xsl:attribute name="align">center</xsl:attribute>

                               <xsl:value-of select="CategoryID" />

                         </xsl:element>

                         <xsl:element name="td">

                               <xsl:attribute name="align">center</xsl:attribute>

                               <xsl:value-of select="QuantityPerUnit" />

                         </xsl:element>

    </xsl:element>

    </xsl:for-each>

    </center>

    </table>

    </BODY>

    </HTML>

    </xsl:template>

    </xsl:stylesheet>

    In the XSL stylesheet, we declare a TABLE element and then inside the table element, we use an xsl:for-each construct to loop through all the elements present in the XML data and display each element in its own table row. Inside the table's TD element, we display the actual values from the XML data by using the xsl:value-of element. The output produced by the above code looks like the following.

    The above output shows all the records in the Products table in a single page since we did not have the code required to provide paging mechanism. In the next section, we will see how to declare parameters in an XSL stylesheet and then supply values to it at runtime.

    Declaring parameters in an XSL stylesheet and supplying values to those Parameters

    To implement paging for the above situation, we need to be able to pass parameters to the stylesheet, and these parameters can be used to specify information such as the number of records to be displayed, the page number to be displayed, as well as the total number of records. Accomplishing this requires the following two steps.

    • Declaring parameters in the XSL stylesheet
    • Supplying parameters to the stylesheet

    For this example, let us create a new XSL stylesheet named xmpaging2.xsl and the code for the XSL stylesheet looks like the following.

    <?xml version="1.0" ?>

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="html" />

    <!--Set the paging characteristics - number of records per page and the page number and record count-->

    <!-- Set the number of records per page-->

    <xsl:variable name="recordsPerPage" select="77" />

    <!-- Page Number field -->

    <xsl:variable name="pageNumber" select="0" />

    <!--Record Count Field-->

    <xsl:variable name="recordCount" select="77" />

    <xsl:template match="/">

     

    <HTML>

    <HEAD>

    <TITLE> XSLT In .NET </TITLE>

    </HEAD>

    <BODY>

     

    <span align="center" style="color:Blue;background-color:White;font-weight:bold;height:25px;width:634px;Z-INDEX: 102; LEFT: 203px; POSITION: absolute; TOP: 69px"> This is a sample Application to illustrate XSLT in .NET

    </span>

     

    <table style="Z-INDEX: 101; LEFT: 171px; WIDTH: 501px; POSITION: absolute; TOP: 125px; HEIGHT: 322px" border="1" cellSpacing="1" cellPadding="1">

    <center>

           <xsl:for-each select="//Products">

    <!--this performs the output in table format - and shows only that many records specified in the recordcount variable -->

     

    <xsl:if test="position() &gt; $recordsPerPage * number($pageNumber) and position() &lt;= number($recordsPerPage * number($pageNumber) + $recordsPerPage)">

                  <!-- Each record on a seperate row -->

          

    <xsl:element name="tr">

     

           <xsl:element name="td">                                              <xsl:value-of select="ProductID" />

           </xsl:element>

     

           <xsl:element name="td">

           <xsl:value-of select="ProductName" />

           </xsl:element>

     

           <xsl:element name="td">

    <xsl:attribute name="align">center</xsl:attribute>

           <xsl:value-of select="SupplierID" />

           </xsl:element>

          

    <xsl:element name="td">

           <xsl:attribute name="align">center</xsl:attribute>

           <xsl:value-of select="CategoryID" />

           </xsl:element>

          

    <xsl:element name="td">

           <xsl:attribute name="align">center</xsl:attribute>

           <xsl:value-of select="QuantityPerUnit" />

           </xsl:element>

     

    </xsl:element>

    </xsl:if>

    </xsl:for-each>

    </center>

    </table>

    <!-- Start Of Show previous/next page links-->

    <!-- Show the previous page, only if pageNumber>0  -->

    <span style="Z-INDEX: 101; LEFT: 261px; WIDTH: 501px; POSITION: absolute;

    TOP: 500px; HEIGHT: 62px">

    <xsl:if test="$pageNumber &gt; 0">

    <xsl:element name="a">

    <xsl:attribute name="href">?pagenumber=<xsl:value-of

    select="number($pageNumber)-1" />

                  </xsl:attribute>                                                           &lt;&lt; Previous Page

           </xsl:element>                                                      

           &#160; &#160; &#160; &#160;

    </xsl:if>

     

    <!-- Next page, do not show when at end() of listing -->

    <xsl:if test="($recordCount - ((1+number($pageNumber)) * $recordsPerPage))&gt; 0">

           <xsl:element name="a">

    <xsl:attribute name="href">?pagenumber=<xsl:value-of

    select="number($pageNumber)+1" />

                  </xsl:attribute>                                                           Next page &gt;&gt;

           </xsl:element>

    </xsl:if>

           <!-- End Of Show previous/next page links-->

    </span>

    </BODY>

    </HTML>

    </xsl:template>

    </xsl:stylesheet>

    All that we have changed is the addition of the parameters and the Previous and Next links. At the time of defining the parameters, we also assign default values to them, which will come into play if the caller does not pass values to the stylesheet. The Next Page and Previous Page links allow us to navigate to the next or previous set of records.

    At the top of the listing, we have declared the following variables.

    <xsl:variable name="recordsPerPage" select="77" />
    <!-- Page Number field -->
    <xsl:variable name="pageNumber" select="0" />
    <!--Record Count Field-->
    <xsl:variable name="recordCount" select="77" />
    

    These above-mentioned variables are used to define such characteristics as the number of records to be shown in a page, the current page number, and the total number of records contained in the Products table. Now that we have declared all the parameters, we are ready to start passing values to those parameters from the ASP.NET application.

    How to supply parameters to an XSLT stylesheet
    As mentioned earlier, in this section we will demonstrate how to supply parameters to the XSL stylesheet from an ASP.NET code-behind file. This capability requires the use of the XsltArgumentList class. We will examine some of the important methods and properties of this class before we go on to implement this class in our application.

    XsltArgumentList class allows us to create XSLT reusable and maintainable stylesheets by providing a mechanism for passing parameters to the stylesheets. It also provides us with the ability to associate a class with the namespace URI, due to which we can call the methods of a class directly from a stylesheet. These objects whose methods are invoked from the stylesheet are called Extension objects. We will see an example of this in the next section.

    The following list summarizes the important methods of the XsltArgumentList class.

    • AddParam - As the name suggests, this method allows us to add parameters to the XsltArgumentList object.
    • AddExtensionObject - This method is similar to the AddParam method except for the difference that this method allows us to add a new object to the XsltArgumentList object as opposed to adding a simple parameter. Once the object is added to the XsltArgumentList object and passed to the stylesheet, we can then seamlessly invoke the properties and methods of this object directly from the stylesheet.

    For this example, let us add a new Web form named XslTransformExample2.aspx to the ASP.NET Web application. In the Page_Load event of the Web form, let us add the following lines of code.

    private void Page_Load(object sender, System.EventArgs e)

    {                                       

           //Retrieve the connection string from the Web.config file

           string connString =

    System.Configuration.ConfigurationSettings.AppSettings["connectionString"];

           SqlConnection sqlConn = new SqlConnection(connString);

           //Open the connection to the database

           sqlConn.Open();

           //Instantiate the SqlCommand object and pass the query to be executed

           SqlCommand sqlCommand = new SqlCommand("Select * from Products

    for xml auto,elements",sqlConn);               

           //Execute the query

           XmlReader reader = sqlCommand.ExecuteXmlReader();                   

           //Associate the XmlReader object with the XPathDocument object

           XPathDocument xpathDoc = new XPathDocument(reader);

           //Close the connection to the database

           sqlConn.Close();                                      

           XslTransform transform = new XslTransform();

           //Load the XSL stylsheet into the XslTransform object

           transform.Load(Server.MapPath("xmlpaging2.xsl"));

                        

           XsltArgumentList argsList = new XsltArgumentList();

           //Retrieve the pageNumber from querystring

           int pageNumber = Convert.ToInt32(Request.QueryString["pagenumber"]);

           //Add the required parameters to the XsltArgumentList object

           argsList.AddParam("recordsPerPage","",10);

           argsList.AddParam("pageNumber","",pageNumber);               

           argsList.AddParam("recordCount","",77);                      

           //Invoke the transform method, passing in the XsltArgumentList object

           transform.Transform(xpathDoc,argsList,Response.Output);

           reader.Close();

    }

    In the above lines of code, we will consider only the lines of code that are different from the previous code example.

    Here we create an instance of the XsltArgumentList.

    XsltArgumentList argsList = new XsltArgumentList();
    

    We then retrieve the value of the pagenumber that is passed in the query string.

    	//Retrieve the pageNumber from querystring
    	int pageNumber = Convert.ToInt32(Request.QueryString["pagenumber"]);
    

    After that we add all the parameters to the XsltArgumentList object by invoking the AddParam method.

    	//Add the required parameters to the XsltArgumentList object
    	argsList.AddParam("recordsPerPage","",10);
    	argsList.AddParam("pageNumber","",pageNumber);			
    	argsList.AddParam("recordCount","",77);	
    

    In this case, since we know the total number of records in the Products table, we have hard-coded the value for the recordCount parameter. Finally, we invoke the transform method of the XslTransform class, passing in all the required parameters including the XsltArgumentList object that contains the parameters required to implement paging. Since we want the output to be written to the client browser directly, we pass Response.Output to the third parameter, which indicates the stream to which the output should be written.

    	//Invoke the transform method, passing in the XsltArgumentList object
    	transform.Transform(xpathDoc,argsList,Response.Output);		
    

    With all these enhancements in place, pointing the browser to the URL of the Web form results in the following output.

    The above page shows only 10 records per page. This is because of the recordsPerPage parameter, which is set to 10 in the above code. Now that we have seen how to pass parameters to an XSL stylesheet and control the number of records displayed in the page, we should look at XSLT Extension objects and illustrate how to use them in our application.

    Conclusion

    In this article, we have demonstrated how to transform XML data into HTML by using an XSL stylesheet from within a .NET application. To accomplish this, we took advantages of the classes contained in the System.Xml.Xsl namespace. We also understood how to declare parameters in an XSL stylesheet and supply values to those parameters from our code. In part two of this article, we will see how to make use of XSLT Extension objects and invoke the method of a C# class from an XSL stylesheet.

    I hope you find this article useful, and thanks for reading.

    About the Author

    Thiru has many years of experience in architecting, designing, developing and implementing applications using Object Oriented Application development methodologies. He also possesses a thorough understanding of software life cycle (design, development and testing).

    He is an expert with ASP.NET, .NET Framework, Visual C#.NET, Visual Basic.NET, ADO.NET, XML Web Services and .NET Remoting and holds MCAD for .NET, MCSD and MCP certifications.

    Thiru has authored numerous books and articles. He can be reached at thiruthangarathinam@yahoo.com.

  • Rate This Article
    Not HelpfulMost Helpful
    1 2 3 4 5
    Supporting Products/Tools
    Proposion N2N
    Proposion N2N connects Microsoft .NET applications to Lotus Notes and Lotus Domino databases. This ADO.NET managed data provider allows you to perform blindingly fast queries and updates of Notes data from ASP.NET pages, .NET web services, Windows, or Mobile applications. An innovative SQL-like query language leverages the unique features of Notes and makes collaborative software accessible to relational database programmers.
    [Top]
    Other Articles
    Apr 21, 2005 - Building a FAQ Module for the ASP.NET Community Starter Kit
    This sample chapter from Packt Publishing's "Building Websites with the ASP.NET Community Starter Kit" illustrates how to build a new module on top of the existing code in the ASP.NET Community Starter Kit (CSK). Using a Frequently Asked Questions (FAQ) module as an example, it shows how creating a new module allows you to add entirely new features which integrate seamlessly with the rest of the framework.
    [Read This Article]  [Top]
    Oct 20, 2004 - Beyond the DataGrid: An Architectural View of the Data Source Model in ASP.NET 1.x and 2.0
    Dino Esposito discusses the differences between the DataGrid control in version 1.x and 2.0 of ASP.NET. In the process, he also builds an improved version of the 1.x control that can get you some of the new 2.0 features today.
    [Read This Article]  [Top]
    Aug 25, 2004 - Developing Web Parts with the ICellProvider Interface
    Most default SharePoint Server Web Parts can be connected across organizations. The second article in this series shows how to develop connectable Web Parts that provide information to other Web Parts.
    [Read This Article]  [Top]
    Aug 4, 2004 - Accessibility Improvements in ASP.NET 2.0 - Part 2
    Alex Homer continues to highlight some of the new ASP.NET 2.0 accessibility features. These features make it easier for visually impaired users to view and navigate Web sites and provide better support for alternative types of browsers and user agents.
    [Read This Article]  [Top]
    Jul 30, 2004 - Connectable Web Parts in SharePoint Portal Server 2003 - Part 1
    Most default SharePoint Server Web Parts can be connected across organizations. The first article in this series explains how to connect existing Web Parts using the connection Interface classes in the SharePoint architecture.
    [Read This Article]  [Top]
    Jul 27, 2004 - Accessibility Improvements in ASP.NET 2.0 - Part 1
    Alex Homer highlights some of the new ASP.NET 2.0 accessibility features. These features make it easier for visually impaired users to view and navigate Web sites and provide better support for alternative types of browsers and user agents.
    [Read This Article]  [Top]
    Jun 30, 2004 - Simplified and Extended Data Binding Syntax in ASP.NET 2.0
    Alex Homer discusses the simplification of, and extensions to, the ASP.NET 1.x data binding syntax, the new two-way data binding syntax for updating data sources, and the new syntax for binding to XML data in ASP.NET 2.0.
    [Read This Article]  [Top]
    May 18, 2004 - ASP.NET 2.0 Caching Features
    This article examines some of the new and exciting caching features in ASP.NET 2.0 and shows how to implement them in Web applications.
    [Read This Article]  [Top]
    May 11, 2004 - SharePoint Security and .NET Impersonation
    When implementing custom components that require access to restricted resources, implicit impersonation must be used. Jay Nathan shows how to create a class that makes using .NET Impersonation a snap.
    [Read This Article]  [Top]
    May 4, 2004 - Creating a Flexible Configuration Section Handler
    Jeff Gonzalez demonstrates how to create a flexible configuration section handler using C#. He provides a summary background of the .NET configuration system, explains why the system is useful, and shows how it can be extended.
    [Read This Article]  [Top]
    Mailing List
    Want to receive email when the next article is published? Just Click Here to sign up.

    Support the Active Server Industry



    JupiterOnlineMedia

    internet.comearthweb.comDevx.commediabistro.comGraphics.com

    Search:

    Jupitermedia Corporation has two divisions: Jupiterimages and JupiterOnlineMedia

    Jupitermedia Corporate Info


    Legal Notices, Licensing, Reprints, & Permissions, Privacy Policy.

    Advertise | Newsletters | Tech Jobs | Shopping | E-mail Offers