Description
This example uses a DataList which contains LinkButton controls, which allows a user to navigate through a list of data. The example uses various DataList events to dynamically create the data from each row in the DataList and responds to user interaction within the control.
About Source Code
Create a new ASP.NET project using VS.NET, then drag a DataList control on the web form. Rest of the code is simple. Just follow the source for which events you need to implement.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.Xml.Xsl;
namespace WebBrowse
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
//this is the DataList Item on the WebForm
protected System.Web.UI.WebControls.DataList WebDataList;
private void Page_Load(object sender, System.EventArgs e)
{
//initialize GUI settings
if (!this.IsPostBack)
{
DMSDataList.DataSource = BuildDataTable(SomeXMLNode);
DMSDataList.DataBind();
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.DMSDataList.ItemCreated += new System.Web.UI.WebControls.DataListItemEventHandler
(this.DMSDataList_ItemCreated);
this.DMSDataList.ItemCommand += new System.Web.UI.WebControls.DataListCommandEventHandler
(this.DMSDataList_ItemCommand);
this.DMSDataList.ItemDataBound += new System.Web.UI.WebControls.DataListItemEventHandler
(this.DMSDataList_ItemDataBound);
this.DMSDataList.SelectedIndexChanged += new System.EventHandler
(this.DMSDataList_SelectedIndexChanged);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private ICollection BuildDataTable(string xmlElement)
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ObjectName", typeof(string)));
//create a row for each item the incoming XML string
NameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);
//Create the reader
XmlTextReader readerXML = new XmlTextReader(dmsObjects, XmlNodeType.Element, context);
while (readerXML.Read())
{
if (readerXML.Name == xmlElement)
{
DataRow dr = dt.NewRow();
//set the object id in first column
string objectName = readerXML.ReadString();
dr[0] = objectName; //set the object name in second column
dt.Rows.Add(dr);
}
}
DataView dv = new DataView(dt);
return dv;
}
private void WebDataList_ItemCreated(object sender,
System.Web.UI.WebControls.DataListItemEventArgs e)
{
//based on the item set the attributes
switch (e.Item.ItemType)
{
case System.Web.UI.WebControls.ListItemType.Item:
e.Item.BackColor = Color.White;
e.Item.CssClass = "rowList";
break;
case System.Web.UI.WebControls.ListItemType.AlternatingItem:
e.Item.BackColor = Color.White;
e.Item.CssClass = "rowList";
break;
case System.Web.UI.WebControls.ListItemType.SelectedItem:
e.Item.BackColor = Color.White;
e.Item.CssClass = "rowList";
break;
default: //code used for the setting the header
e.Item.BackColor = Color.FromArgb(23, 72, 127);
e.Item.CssClass = "headerList";
break;
}
}
private void WebDataList_SelectedIndexChanged(object sender, System.EventArgs e)
{
}
private void WebDataList_ItemCommand(object source,
System.Web.UI.WebControls.DataListCommandEventArgs e)
{
//build the XML based on the selection of the user
XmlNode xmlInput = GetMoreXML(((LinkButton)e.CommandSource).Text);
DMSDataList.DataSource = BuildDataTable(xmlInput);
DMSDataList.DataBind();
}
private void WebDataList_ItemDataBound(object sender,
System.Web.UI.WebControls.DataListItemEventArgs e)
{
//set all the correct information for each DMS object
DataRowView rowView = (DataRowView)e.Item.DataItem;
if (rowView != null)
{
Array itemArray = rowView.Row.ItemArray;
//set the properties for each item
LinkButton linkBtn = (LinkButton)e.Item.FindControl("linkItem");
linkBtn.Text = (string)itemArray.GetValue(0);
}
}
}
}