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);

}

}

}
}