天气预报的webservice+三级无刷新级联菜单客户端(js+xmlhttp实现)--Server side
A. xml file for storing area information.
<?xml version="1.0" encoding="utf-8" ?>
<Areas>
<area name="华北地区">
<provinces>
<province name="北京">
<cities>
<city>北京</city>
</cities>
</province>
<province name="天津">
<cities>
<city>天津</city>
</cities>
</province>
……
</provinces>
</area>
……
B. cs code for analyzing area information and weather detail----WeatherGet.cs
1
/****************************************************************************
2
* Created By: zhanqiangz(闲云野鹤)
3
* Time: Mar 2005
4
* Description: A simple weather service implemented with xmlhttp
5
* **************************************************************************/
6
using System;
7
using System.Data;
8
using System.Configuration;
9
using System.Web;
10
using System.Web.Security;
11
using System.Web.UI;
12
using System.Web.UI.WebControls;
13
using System.Web.UI.WebControls.WebParts;
14
using System.Web.UI.HtmlControls;
15
using System.Xml;
16
using System.Collections;
17
using MSXML2;
18
using System.Text.RegularExpressions;
19![](/Images/OutliningIndicators/None.gif)
20
/// <summary>
21
/// Summary description for WeatherGet
22
/// </summary>
23
public class WeatherGet
24
{
25
public WeatherGet()
26
{
27
//
28
// TODO: Add constructor logic here
29
//
30
}
31
/// <summary>
32
/// Common function for getting areas,provinces and cities.
33
/// </summary>
34
/// <param name="strErea"></param>
35
/// <param name="strProvince"></param>
36
/// <returns>ArrayList including required data</returns>
37
internal static ArrayList GetNode(string strErea, string strProvince)
38
{
39![](/Images/OutliningIndicators/InBlock.gif)
40
XmlDocument doc = new XmlDocument();
41
{
42
bool blnIsGetCity = false, blnIsGetErea = false;
43
blnIsGetErea = string.IsNullOrEmpty(strErea);
44
blnIsGetCity = !string.IsNullOrEmpty(strProvince);
45![](/Images/OutliningIndicators/InBlock.gif)
46
string strPath = string.Empty;
47
strPath = HttpContext.Current.Server.MapPath("Erea.xml");
48
doc.Load(strPath);
49
XmlNode ParentNode = null;
50![](/Images/OutliningIndicators/InBlock.gif)
51
if (blnIsGetErea)
52
ParentNode = doc.SelectSingleNode("//Areas");
53
else if (!blnIsGetErea && !blnIsGetCity)
54
ParentNode = doc.SelectSingleNode("//area[@name='" + strErea + "']/provinces");
55
else if (!blnIsGetErea && blnIsGetCity)
56
ParentNode = doc.SelectSingleNode("//area[@name='" + strErea + "']/provinces/province[@name='" + strProvince + "']/cities");
57![](/Images/OutliningIndicators/InBlock.gif)
58
XmlNodeList list = ParentNode.ChildNodes;
59
ArrayList result = new ArrayList();
60
XmlNode node = null;
61
for (int i = 0; i < list.Count; i++)
62
{
63
node = list[i];
64
if (blnIsGetCity)
65
result.Add(node.InnerText);
66
else
67
result.Add(node.Attributes["name"].InnerText);
68
}
69
return result;
70
}
71
}
72
/// <summary>
73
/// Get weather
74
/// </summary>
75
/// <param name="Erea"></param>
76
/// <param name="Province"></param>
77
/// <param name="City"></param>
78
/// <returns></returns>
79
internal static WeatherInfo GetWeather(string Erea, string Province, string City)
80
{
81
string strUrl = string.Empty;
82
string strDay = string.Empty;
83
string strSunRise = string.Empty;
84
string strSunSet = string.Empty;
85
string strDegree = string.Empty;
86
string strWeather = string.Empty;
87![](/Images/OutliningIndicators/InBlock.gif)
88
WeatherInfo weather = new WeatherInfo();
89
strUrl = "http://www.cma.gov.cn/netcenter_news/qxyb/city/index.php?city=" + HttpContext.Current.Server.HtmlEncode(City) + "&province=" + HttpContext.Current.Server.HtmlEncode(Province) + "&area=" + HttpContext.Current.Server.HtmlEncode(Erea);
90
MSXML2.XMLHTTP xmlhttp = new MSXML2.XMLHTTP();
91
xmlhttp.open("GET", strUrl, false, null, null);
92
xmlhttp.send("");
93
MSXML2.XMLDocument dom = new XMLDocument();
94![](/Images/OutliningIndicators/InBlock.gif)
95
string strSource = xmlhttp.responseText;
96
strSource = strSource.Substring(strSource.IndexOf("<!--天气预报开始-->"));
97
strSource = strSource.Substring(0, strSource.IndexOf("<!--未来天气预报结束-->"));
98
Regex reg = new Regex(@"<B>", RegexOptions.IgnoreCase);
99
strSource = reg.Replace(strSource, string.Empty);
100
weather.City = City;
101
strDay = AnylysisWeatherInfo(strSource, @"td align=center class=link15>.*?</td>", false);
102
weather.Day = strDay;
103
strSunRise = AnylysisWeatherInfo(strSource, @"日出:.*?</b>", true);
104
weather.SunRiseTime = strSunRise;
105![](/Images/OutliningIndicators/InBlock.gif)
106
strSunSet = AnylysisWeatherInfo(strSource, @"日落:.*?</b>", true);
107
weather.SunSetTime = strSunSet;
108
strDegree = AnylysisWeatherInfo(strSource, @"td colspan=2 valign=middle align=center class=link12 height=35>.*?</td>", false);
109
weather.Degree = strDegree;
110
strWeather = AnylysisWeatherInfo(strSource, @"td colspan=2 valign=middle align=center class=link17 height=35>.*?</td>", false);
111
weather.Weather = strWeather;
112![](/Images/OutliningIndicators/InBlock.gif)
113
return weather;
114![](/Images/OutliningIndicators/InBlock.gif)
115
}
116
/// <summary>
117
/// Parse weather information with regularexpressions.
118
/// </summary>
119
/// <param name="strSourceString"></param>
120
/// <param name="strPattern"></param>
121
/// <param name="fromBeginning"></param>
122
/// <returns></returns>
123
private static string AnylysisWeatherInfo(string strSourceString, string strPattern, bool fromBeginning)
124
{
125
Match m = null;
126
string strResult;
127
int intStart = 0, intLengh = 0;
128
m = Regex.Match(strSourceString, strPattern, RegexOptions.Singleline);
129
strResult = m.Value;
130
if (fromBeginning)
131
strResult = strResult.Substring(0, strResult.IndexOf("<"));
132
else
133
{
134
intStart = strResult.IndexOf(">");
135
intStart += 1;
136
intLengh = strResult.IndexOf("<") - intStart;
137
strResult = strResult.Substring(intStart, intLengh);
138![](/Images/OutliningIndicators/InBlock.gif)
139
}
140
return strResult;
141
}
142![](/Images/OutliningIndicators/InBlock.gif)
143
}
144
/// <summary>
145
/// Weather entity.
146
/// </summary>
147
public class WeatherInfo
148
{
149
private string m_City;
150
private string m_SunRiseTime;
151
private string m_SunSetTime;
152
private string m_Weather;
153
private string m_Degree;
154
private string m_Day;
155![](/Images/OutliningIndicators/InBlock.gif)
156
public string City
157
{
158
set { m_City = value; }
159
get { return m_City; }
160
}
161
public string SunRiseTime
162
{
163
set { m_SunRiseTime = value; }
164
get { return m_SunRiseTime; }
165
}
166![](/Images/OutliningIndicators/InBlock.gif)
167
public string SunSetTime
168
{
169
set { m_SunSetTime = value; }
170
get { return m_SunSetTime; }
171
}
172![](/Images/OutliningIndicators/InBlock.gif)
173
public string Weather
174
{
175
set { m_Weather = value; }
176
get { return m_Weather; }
177
}
178![](/Images/OutliningIndicators/InBlock.gif)
179
public string Degree
180
{
181
set { m_Degree = value; }
182
get { return m_Degree; }
183
}
184![](/Images/OutliningIndicators/InBlock.gif)
185
public string Day
186
{
187
set { m_Day = value; }
188
get { return m_Day; }
189
}
190![](/Images/OutliningIndicators/InBlock.gif)
191
}
192![](/Images/OutliningIndicators/None.gif)
C. Service.cs & Service.asmx![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
2
![](/Images/OutliningIndicators/InBlock.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/None.gif)
15
![](/Images/OutliningIndicators/None.gif)
16
![](/Images/OutliningIndicators/None.gif)
17
![](/Images/OutliningIndicators/None.gif)
18
![](/Images/OutliningIndicators/None.gif)
19
![](/Images/OutliningIndicators/None.gif)
20
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
23
![](/Images/OutliningIndicators/None.gif)
24
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
31
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/InBlock.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/InBlock.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/InBlock.gif)
68
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
71
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
72
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/InBlock.gif)
75
![](/Images/OutliningIndicators/InBlock.gif)
76
![](/Images/OutliningIndicators/InBlock.gif)
77
![](/Images/OutliningIndicators/InBlock.gif)
78
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
81
![](/Images/OutliningIndicators/InBlock.gif)
82
![](/Images/OutliningIndicators/InBlock.gif)
83
![](/Images/OutliningIndicators/InBlock.gif)
84
![](/Images/OutliningIndicators/InBlock.gif)
85
![](/Images/OutliningIndicators/InBlock.gif)
86
![](/Images/OutliningIndicators/InBlock.gif)
87
![](/Images/OutliningIndicators/InBlock.gif)
88
![](/Images/OutliningIndicators/InBlock.gif)
89
![](/Images/OutliningIndicators/InBlock.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/InBlock.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/InBlock.gif)
94
![](/Images/OutliningIndicators/InBlock.gif)
95
![](/Images/OutliningIndicators/InBlock.gif)
96
![](/Images/OutliningIndicators/InBlock.gif)
97
![](/Images/OutliningIndicators/InBlock.gif)
98
![](/Images/OutliningIndicators/InBlock.gif)
99
![](/Images/OutliningIndicators/InBlock.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/InBlock.gif)
102
![](/Images/OutliningIndicators/InBlock.gif)
103
![](/Images/OutliningIndicators/InBlock.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/InBlock.gif)
106
![](/Images/OutliningIndicators/InBlock.gif)
107
![](/Images/OutliningIndicators/InBlock.gif)
108
![](/Images/OutliningIndicators/InBlock.gif)
109
![](/Images/OutliningIndicators/InBlock.gif)
110
![](/Images/OutliningIndicators/InBlock.gif)
111
![](/Images/OutliningIndicators/InBlock.gif)
112
![](/Images/OutliningIndicators/InBlock.gif)
113
![](/Images/OutliningIndicators/InBlock.gif)
114
![](/Images/OutliningIndicators/InBlock.gif)
115
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
116
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
117
![](/Images/OutliningIndicators/InBlock.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/InBlock.gif)
120
![](/Images/OutliningIndicators/InBlock.gif)
121
![](/Images/OutliningIndicators/InBlock.gif)
122
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
123
![](/Images/OutliningIndicators/InBlock.gif)
124
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
125
![](/Images/OutliningIndicators/InBlock.gif)
126
![](/Images/OutliningIndicators/InBlock.gif)
127
![](/Images/OutliningIndicators/InBlock.gif)
128
![](/Images/OutliningIndicators/InBlock.gif)
129
![](/Images/OutliningIndicators/InBlock.gif)
130
![](/Images/OutliningIndicators/InBlock.gif)
131
![](/Images/OutliningIndicators/InBlock.gif)
132
![](/Images/OutliningIndicators/InBlock.gif)
133
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
134
![](/Images/OutliningIndicators/InBlock.gif)
135
![](/Images/OutliningIndicators/InBlock.gif)
136
![](/Images/OutliningIndicators/InBlock.gif)
137
![](/Images/OutliningIndicators/InBlock.gif)
138
![](/Images/OutliningIndicators/InBlock.gif)
139
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
140
![](/Images/OutliningIndicators/InBlock.gif)
141
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
142
![](/Images/OutliningIndicators/InBlock.gif)
143
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
144
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
145
![](/Images/OutliningIndicators/InBlock.gif)
146
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
147
![](/Images/OutliningIndicators/None.gif)
148
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
149
![](/Images/OutliningIndicators/InBlock.gif)
150
![](/Images/OutliningIndicators/InBlock.gif)
151
![](/Images/OutliningIndicators/InBlock.gif)
152
![](/Images/OutliningIndicators/InBlock.gif)
153
![](/Images/OutliningIndicators/InBlock.gif)
154
![](/Images/OutliningIndicators/InBlock.gif)
155
![](/Images/OutliningIndicators/InBlock.gif)
156
![](/Images/OutliningIndicators/InBlock.gif)
157
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
158
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
159
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
160
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
161
![](/Images/OutliningIndicators/InBlock.gif)
162
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
163
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
164
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
165
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
166
![](/Images/OutliningIndicators/InBlock.gif)
167
![](/Images/OutliningIndicators/InBlock.gif)
168
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
169
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
170
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
171
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
172
![](/Images/OutliningIndicators/InBlock.gif)
173
![](/Images/OutliningIndicators/InBlock.gif)
174
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
175
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
176
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
177
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
178
![](/Images/OutliningIndicators/InBlock.gif)
179
![](/Images/OutliningIndicators/InBlock.gif)
180
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
181
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
182
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
183
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
184
![](/Images/OutliningIndicators/InBlock.gif)
185
![](/Images/OutliningIndicators/InBlock.gif)
186
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
187
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
188
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
189
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
190
![](/Images/OutliningIndicators/InBlock.gif)
191
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
192
![](/Images/OutliningIndicators/None.gif)
1
/****************************************************************************
2
* Created By: zhanqiangz(闲云野鹤)
3
* Time: Mar 2005
4
* Description: A simple weather service implemented with xmlhttp, just for fun.
5
* **************************************************************************/
6
using System;
7
using System.Web;
8
using System.Web.Services;
9
using System.Web.Services.Protocols;
10
using System.Collections;
11![](/Images/OutliningIndicators/None.gif)
12
[WebService(Namespace = "http://tempuri.org/")]
13
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
14
public class Service : System.Web.Services.WebService
15
{
16
public Service () {
17![](/Images/OutliningIndicators/InBlock.gif)
18
//Uncomment the following line if using designed components
19
//InitializeComponent();
20
}
21![](/Images/OutliningIndicators/InBlock.gif)
22
23
[WebMethod(Description="Get ereas in china")]
24
public string[] GetEreas()
25
{
26
string[] EreaArray = null;
27
ArrayList list = null;
28
list= WeatherGet.GetNode(null, null);
29
EreaArray = (string[])(list.ToArray(typeof(string)));
30
return EreaArray;
31
}
32
33
[WebMethod(Description = "Get Provinces from erea provided")]
34
public string[] GetProvinceFromErea(string strErea)
35
{
36
string[] EreaArray = null;
37
ArrayList list = null;
38
list = WeatherGet.GetNode(strErea, null);
39
EreaArray = (string[])(list.ToArray(typeof(string)));
40
return EreaArray;
41
}
42![](/Images/OutliningIndicators/InBlock.gif)
43
[WebMethod(Description = "Get cities from province provided")]
44
public string[] GetCitiesFromProvince(string strErea,string strProvince)
45
{
46
string[] EreaArray = null;
47
ArrayList list = null;
48
list = WeatherGet.GetNode(strErea, strProvince);
49
EreaArray = (string[])(list.ToArray(typeof(string)));
50
return EreaArray;
51
}
52
[WebMethod(Description = "Get weather ")]
53
public WeatherInfo GetWeather(string Erea,string Province,string City)
54
{
55
return WeatherGet.GetWeather(Erea, Province, City);
56
}
57
}
58
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
2
![](/Images/OutliningIndicators/InBlock.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/None.gif)
15
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
16
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
57
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
58
![](/Images/OutliningIndicators/None.gif)
<%@ WebService Language="C#" CodeBehind="~/App_Code/Service.cs" Class="Service" %>