制作一个简单的服务器端控制

2000082805.aspx
-------------------------------------------------------------

1@ Register TagPrefix="CJ" Namespace="cjServerControls" 
1<html>
2<head>
3</head>
4<body>
5<form action="2000082605.aspx" method="post" runat="server">
6<cj:xmldocreader listtext="au_id" listvalue="au_id" path="C:\Inetpub\wwwroot\myASP\tutorials\authors.xml" runat="server"></cj:xmldocreader>
7</form>
8</body>
9</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
-------------------------------------------------------------

  1<root>
  2<schema id="DocumentElement" targetnamespace="" xdo:datasetname="DocumentElement" xmlns="http://www.w3.org/1999/XMLSchema" xmlns:xdo="urn:schemas-microsoft-com:xml-xdo">
  3<element name="Table">
  4<complextype content="elementOnly">
  5<element name="au_id" type="string"></element>
  6<element name="au_lname" type="string"></element>
  7<element name="au_fname" type="string"></element>
  8<element name="phone" type="string"></element>
  9<element minoccurs="0" name="address" type="string"></element>
 10<element minoccurs="0" name="city" type="string"></element>
 11<element minoccurs="0" name="state" type="string"></element>
 12<element minoccurs="0" name="zip" type="string"></element>
 13<element name="contract" type="boolean"></element>
 14</complextype>
 15<unique name="Constraint1" xdo:primarykey="True">
 16<selector>.</selector>
 17<field>au_id</field>
 18</unique>
 19</element>
 20</schema>
 21<documentelement>
 22<table>
 23<au_id>000-00-0000</au_id>
 24<au_lname>Doe</au_lname>
 25<au_fname>John</au_fname>
 26<phone>foo </phone>
 27<address>One Microsoft Way</address>
 28<city>Redmond</city>
 29<state>CA</state>
 30<zip>98005</zip>
 31<contract>True</contract>
 32</table>
 33<table>
 34<au_id>000-00-0123</au_id>
 35<au_lname>Millington</au_lname>
 36<au_fname>John</au_fname>
 37<phone>808 555-5555</phone>
 38<address>One Microsoft Way</address>
 39<city>Redmond</city>
 40<state>CA</state>
 41<zip>98005</zip>
 42<contract>False</contract>
 43</table>
 44<table>
 45<au_id>172-32-1176</au_id>
 46<au_lname>White</au_lname>
 47<au_fname>Johnson</au_fname>
 48<phone>408 496-7223</phone>
 49<address>10932 Bigge Rd.</address>
 50<city>Menlo Park</city>
 51<state>CA</state>
 52<zip>94025</zip>
 53<contract>True</contract>
 54</table>
 55<table>
 56<au_id>213-46-8915</au_id>
 57<au_lname>Green</au_lname>
 58<au_fname>Marjorie</au_fname>
 59<phone>415 986-7020</phone>
 60<address>309 63rd St. #411</address>
 61<city>Oakland</city>
 62<state>CA</state>
 63<zip>94618</zip>
 64<contract>True</contract>
 65</table>
 66<table>
 67<au_id>238-95-7766</au_id>
 68<au_lname>Carson</au_lname>
 69<au_fname>Cheryl</au_fname>
 70<phone>415 548-7723</phone>
 71<address>589 Darwin Ln.</address>
 72<city>Berkeley</city>
 73<state>CA</state>
 74<zip>94705</zip>
 75<contract>True</contract>
 76</table>
 77<table>
 78<au_id>267-41-2394</au_id>
 79<au_lname>O'Leary</au_lname>
 80<au_fname>Michael</au_fname>
 81<phone>408 286-2428</phone>
 82<address>22 Cleveland Av. #14</address>
 83<city>San Jose</city>
 84<state>CA</state>
 85<zip>95128</zip>
 86<contract>True</contract>
 87</table>
 88<table>
 89<au_id>274-80-9391</au_id>
 90<au_lname>Straight</au_lname>
 91<au_fname>Dean</au_fname>
 92<phone>415 834-2919</phone>
 93<address>5420 College Av.</address>
 94<city>Oakland</city>
 95<state>CA</state>
 96<zip>94609</zip>
 97<contract>True</contract>
 98</table>
 99<table>
100<au_id>341-22-1782</au_id>
101<au_lname>Smith</au_lname>
102<au_fname>Meander</au_fname>
103<phone>913 843-0462</phone>
104<address>10 Mississippi Dr.</address>
105<city>Lawrence</city>
106<state>KS</state>
107<zip>66044</zip>
108<contract>False</contract>
109</table>
110<table>
111<au_id>409-56-7008</au_id>
112<au_lname>Bennet</au_lname>
113<au_fname>Abraham</au_fname>
114<phone>415 658-9932</phone>
115<address>6223 Bateman St.</address>
116<city>Berkeley</city>
117<state>CA</state>
118<zip>94705</zip>
119<contract>True</contract>
120</table>
121<table>
122<au_id>427-17-2319</au_id>
123<au_lname>Dull</au_lname>
124<au_fname>Ann</au_fname>
125<phone>415 836-7128</phone>
126<address>3410 Blonde St.</address>
127<city>Palo Alto</city>
128<state>CA</state>
129<zip>94301</zip>
130<contract>True</contract>
131</table>
132<table>
133<au_id>472-27-2349</au_id>
134<au_lname>Gringlesby</au_lname>
135<au_fname>Burt</au_fname>
136<phone>707 938-6445</phone>
137<address>PO Box 792</address>
138<city>Covelo</city>
139<state>CA</state>
140<zip>95428</zip>
141<contract>True</contract>
142</table>
143<table>
144<au_id>486-29-1786</au_id>
145<au_lname>Locksley</au_lname>
146<au_fname>Charlene</au_fname>
147<phone>415 585-4620</phone>
148<address>18 Broadway Av.</address>
149<city>San Francisco</city>
150<state>CA</state>
151<zip>94130</zip>
152<contract>True</contract>
153</table>
154<table>
155<au_id>527-72-3246</au_id>
156<au_lname>Greene</au_lname>
157<au_fname>Morningstar</au_fname>
158<phone>615 297-2723</phone>
159<address>22 Graybar House Rd.</address>
160<city>Nashville</city>
161<state>TN</state>
162<zip>37215</zip>
163<contract>False</contract>
164</table>
165<table>
166<au_id>648-92-1872</au_id>
167<au_lname>Blotchet-Halls</au_lname>
168<au_fname>Reginald</au_fname>
169<phone>503 745-6402</phone>
170<address>55 Hillsdale Bl.</address>
171<city>Corvallis</city>
172<state>OR</state>
173<zip>97330</zip>
174<contract>True</contract>
175</table>
176<table>
177<au_id>672-71-3249</au_id>
178<au_lname>Yokomoto</au_lname>
179<au_fname>Akiko</au_fname>
180<phone>415 935-4228</phone>
181<address>3 Silver Ct.</address>
182<city>Walnut Creek</city>
183<state>CA</state>
184<zip>94595</zip>
185<contract>True</contract>
186</table>
187<table>
188<au_id>712-45-1867</au_id>
189<au_lname>del Castillo</au_lname>
190<au_fname>Innes</au_fname>
191<phone>615 996-8275</phone>
192<address>2286 Cram Pl. #86</address>
193<city>Ann Arbor</city>
194<state>MI</state>
195<zip>48105</zip>
196<contract>True</contract>
197</table>
198<table>
199<au_id>722-51-5454</au_id>
200<au_lname>DeFrance</au_lname>
201<au_fname>Michel</au_fname>
202<phone>219 547-9982</phone>
203<address>3 Balding Pl.</address>
204<city>Gary</city>
205<state>IN</state>
206<zip>46403</zip>
207<contract>True</contract>
208</table>
209<table>
210<au_id>724-08-9931</au_id>
211<au_lname>Stringer</au_lname>
212<au_fname>Dirk</au_fname>
213<phone>415 843-2991</phone>
214<address>5420 Telegraph Av.</address>
215<city>Oakland</city>
216<state>CA</state>
217<zip>94609</zip>
218<contract>False</contract>
219</table>
220<table>
221<au_id>724-80-9391</au_id>
222<au_lname>MacFeather</au_lname>
223<au_fname>Stearns</au_fname>
224<phone>415 354-7128</phone>
225<address>44 Upland Hts.</address>
226<city>Oakland</city>
227<state>CA</state>
228<zip>94612</zip>
229<contract>True</contract>
230</table>
231<table>
232<au_id>756-30-7391</au_id>
233<au_lname>Karsen</au_lname>
234<au_fname>Livia</au_fname>
235<phone>415 534-9219</phone>
236<address>5720 McAuley St.</address>
237<city>Oakland</city>
238<state>CA</state>
239<zip>94609</zip>
240<contract>True</contract>
241</table>
242<table>
243<au_id>807-91-6654</au_id>
244<au_lname>Panteley</au_lname>
245<au_fname>Sylvia</au_fname>
246<phone>301 946-8853</phone>
247<address>1956 Arlington Pl.</address>
248<city>Rockville</city>
249<state>MD</state>
250<zip>20853</zip>
251<contract>True</contract>
252</table>
253<table>
254<au_id>846-92-7186</au_id>
255<au_lname>Hunter</au_lname>
256<au_fname>Sheryl</au_fname>
257<phone>415 836-7128</phone>
258<address>3410 Blonde St.</address>
259<city>Palo Alto</city>
260<state>CA</state>
261<zip>94301</zip>
262<contract>True</contract>
263</table>
264<table>
265<au_id>893-72-1158</au_id>
266<au_lname>McBadden</au_lname>
267<au_fname>Heather</au_fname>
268<phone>707 448-4982</phone>
269<address>301 Putnam</address>
270<city>Vacaville</city>
271<state>CA</state>
272<zip>95688</zip>
273<contract>False</contract>
274</table>
275<table>
276<au_id>899-46-2035</au_id>
277<au_lname>Ringer</au_lname>
278<au_fname>Anne</au_fname>
279<phone>801 826-0752</phone>
280<address>67 Seventh Av.</address>
281<city>Salt Lake City</city>
282<state>UT</state>
283<zip>84152</zip>
284<contract>True</contract>
285</table>
286<table>
287<au_id>998-72-3567</au_id>
288<au_lname>Ringer</au_lname>
289<au_fname>Albert</au_fname>
290<phone>801 826-0752</phone>
291<address>67 Seventh Av.</address>
292<city>Salt Lake City</city>
293<state>UT</state>
294<zip>84152</zip>
295<contract>True</contract>
296</table>
297<table>
298<au_id>999-99-9999</au_id>
299<au_lname>Toe</au_lname>
300<au_fname>John</au_fname>
301<phone>808 444-4444</phone>
302<address>21 Microsoft Way</address>
303<city>Redwood</city>
304<state>CA</state>
305<zip>98005</zip>
306<contract>False</contract>
307</table>
308</documentelement>
309</root>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus