制作一个简单的服务器端控制
制作一个简单的服务器端控制,制作一个简单的服务器端控制
-------------------------------------------------------------
<%@ Register TagPrefix="CJ" Namespace="cjServerControls" %
<html
<head
</head
<body
<form method="post" action="2000082605.aspx" runat="server"
<CJ:xmlDocReader listText="au_id" listValue="au_id" runat="server"
path="C:InetpubwwwrootmyASPtutorialsauthors.xml" /
</form
</body
</html
2000082805a.cs
-------------------------------------------------------------
using System;
using System.Data;
using System.IO;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace cjServerControls
{
public class xmlDocReader : Control, INamingContainer
{
string _xmlPath;
string _listID;
string _listValue;
public string Path
{
get { return _xmlPath; }
set { _xmlPath = value; }
}
public string listText
{
get { return _listID; }
set { _listID = value; }
}
public string listValue
{
get {return _listValue; }
set {_listValue = value; }
}
//Were are creating a member here so we can access it throughout the class
DropDownList _DDL;
DataGrid _DG;
FileStream fs;
StreamReader sr;
DataSet ds;
protected override void PreRender()
{
if (Page.IsPostBack) {
DataView dv = new DataView(ds.Tables[0]);
dv.RowFilter = listValue + "='" + _DDL.SelectedItem.Text + "'";
_DG = new DataGrid();
_DG.DataSource = dv;
_DG.DataBind();
Controls.Add(_DG);
}
}
protected override void CreateChildControls()
{
fs = new FileStream(Path, FileMode.Open, FileAccess.Read);
sr = new StreamReader(fs);
ds = new DataSet();
ds.ReadXml(sr);
fs.Close();
_DDL = new DropDownList();
_DDL.DataTextField = listText;
_DDL.DataValueField = listValue;
_DDL.AutoPostBack = true;
_DDL.DataSource = ds.Tables[0].DefaultView;
_DDL.DataBind();
Controls.Add(_DDL);
}
}
}
authors.xml
-------------------------------------------------------------
<root
<schema id="DocumentElement" targetNamespace="" xmlns="http://www.w3.org/1999/XMLSchema"
xmlns:xdo="urn:schemas-microsoft-com:xml-xdo" xdo:DataSetName="DocumentElement"
<element name="Table"
<complexType content="elementOnly"
<element name="au_id" type="string"</element
<element name="au_lname" type="string"</element
<element name="au_fname" type="string"</element
<element name="phone" type="string"</element
<elem