Mega Code Archive

 
Categories / ASP.Net / ADO Database
 

ObjectDataSource based on XML

<%@ Page Language="C#" %> <!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>Articles</title> </head> <body>     <form id="form1" runat="server">         <asp:GridView ID="GridView1" runat="server"              AutoGenerateColumns="False" DataSourceID="ArticlesODS">             <Columns>                 <asp:BoundField DataField="Year"                      HeaderText="Year" SortExpression="Year" />                 <asp:BoundField DataField="Month"                      HeaderText="Month" SortExpression="Month" />                 <asp:BoundField DataField="Title"                      HeaderText="Title" SortExpression="Title" />                 <asp:BoundField DataField="Content"                      HeaderText="Content" SortExpression="Content" />             </Columns>         </asp:GridView>         <asp:ObjectDataSource ID="ArticlesODS" runat="server"              SelectMethod="GetArticles" TypeName="Articles">             <SelectParameters>                 <asp:QueryStringParameter DefaultValue="2006"                      Name="year" QueryStringField="year"                     Type="String" />                 <asp:QueryStringParameter DefaultValue="01"                      Name="month" QueryStringField="month"                     Type="String" />             </SelectParameters>         </asp:ObjectDataSource>     </form> </body> </html> File: ArticleData.cs using System; using System.Collections.Generic; class ArticleData {     public void GetArticles(List<Article> articles, string year, string month)     {         DataSet dsArticles = new DataSet();         dsArticles.ReadXml(HttpContext.Current.Server.MapPath("Data.xml"));         DataView dvArticles = new DataView(dsArticles.Tables["article"]);         dvArticles.RowFilter =             "year = '" + year + "' " +             "and month = '" + month + "'";         Article currArticle = null;         IEnumerator articleRows = dvArticles.GetEnumerator();         while (articleRows.MoveNext())         {             DataRowView articleRow = (DataRowView)articleRows.Current;             currArticle = new Article(                 (string)articleRow["year"],                 (string)articleRow["month"],                 (string)articleRow["title"],                 (string)articleRow["content"]);             articles.Add(currArticle);         }     } } class Article {     private string m_year;     public string Year     {         get { return m_year; }         set { m_year = value; }     }     private string m_month;     public string Month     {         get { return m_month; }         set { m_month = value; }     }        private string m_title;     public string Title     {         get { return m_title; }         set { m_title = value; }     }     private string m_content;     public string Content     {         get { return m_content; }         set { m_content = value; }     }   public Article(string year, string month, string title, string content)   {         Year = year;         Month = month;         Title = title;         Content = content;   } } public class Articles : List<Article> {     public List<Article> GetArticles(string year, string month)     {         ArticleData dal = new ArticleData();         dal.GetArticles(this, year, month);         return this;     } } File: Data.xml <?xml version="1.0" encoding="utf-8" ?> <articles>   <article>     <year>2005</year>     <month>05</month>     <title>Title6</title>     <content>This is the text of Title6.</content>   </article>   <article>     <year>2005</year>     <month>06</month>     <title>Title7</title>     <content>This is the text of Title7.</content>   </article> </articles>