c#存储过程实现分页数据读取 适用于SQL 2005,性能良好
一、存储过程如下:
1![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
-- =============================================
4
-- Author: 普向东
5
-- Create date: 2008-7-25
6
-- Description: 适用于SQL 2005通用分页存储过程
7
-- =============================================
8
ALTER PROCEDURE [dbo].[PrcPagination]
9
(
10
@TableName NVARCHAR(500), -- 表名或视图名,甚至可以是嵌套SQL:(Select * From Tab Where ID>1000) Tab
11
@FieldsName NVARCHAR(300) = '*', -- 返回记录集字段名,","隔开,默认是"*"
12
@ConditionName NVARCHAR(500), -- 过滤条件
13
@OrderBy NVARCHAR(100) = 'ID ASC', -- 排序规则
14
@PageSize INT = 10, -- 每页记录条数(页面大小)
15
@PageIndex INT = 1, -- 当前页码
16
@TotalCount INT OUTPUT -- 记录总数
17
)
18
AS
19
BEGIN
20
SET ROWCOUNT @PageSize;
21![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
22
BEGIN Try
23
-- 整合SQL
24
Declare @SQL NVARCHAR(4000), @Portion NVARCHAR(4000);
25
26
SET @Portion = ' ROW_NUMBER() OVER (ORDER BY ' + @OrderBy + ') AS ROWNUM FROM ' + @TableName;
27![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
28
SET @Portion = @Portion + (CASE WHEN LEN(@ConditionName) >= 1 THEN (' Where ' + @ConditionName + ') AS tab') ELSE (') AS tab') END);
29![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
30
SET @SQL = 'Select TOP(' + CAST(@PageSize AS NVARCHAR(8)) + ') ' + @FieldsName + ' FROM (Select ' + @FieldsName + ',' + @Portion;
31![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
32
SET @SQL = @SQL + ' Where tab.ROWNUM > ' + CAST((@PageIndex-1)*@PageSize AS NVARCHAR(8));
33
34
print @SQL
35
-- 执行SQL, 取当前页记录集
36
Execute(@SQL);
37
--------------------------------------------------------------------
38
-- 计算数据记录总量
39
SET @SQL = 'SET @Rows = (Select MAX(ROWNUM) FROM (Select' + @Portion + ')';
40
Execute sp_executesql @SQL, N'@Rows INT OUTPUT', @TotalCount OUTPUT
41
42
End Try
43
BEGIN Catch
44
End Catch;
45![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
46
-- 执行成功
47
Return @TotalCount;
48
END
49![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
50![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
51![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
52![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
二、调用方法类:
1
/// <summary>
2
/// 分页类DALDALPageHelper 的摘要说明
3
/// </summary>
4
public class DALPageHelper
5
{
6
/// <summary>
7
/// 分页数据读取,返回类型: SqlDataReader
8
/// by pxd in 2008-7-23
9
/// </summary>
10
/// <param name="connectionString">数据库连接字符串</param>
11
/// <param name="tableName">数据表名称</param>
12
/// <param name="primaryKey">数据主键字段</param>
13
/// <param name="fieldsName">检索字段</param>
14
/// <param name="conditionName">检索条件,Where 条件</param>
15
/// <param name="orderByName">排序字符串</param>
16
/// <param name="pageSize">每页数据量</param>
17
/// <param name="pageIndex">当前页码</param>
18
/// <param name="recordCount">数据总量</param>
19
/// <returns>分页数据读取,返回类型: SqlDataReader</returns>
20
public static SqlDataReader GetPageDataSdr(string connectionString, string tableName, string fieldsName, string conditionName, string orderByName, int pageSize, int pageIndex, out int recordCount)
21
{
22
SqlParameter _tblName = new SqlParameter("TableName", SqlDbType.VarChar, 500);
23
_tblName.Value = tableName;
24
SqlParameter _fields = new SqlParameter("FieldsName", SqlDbType.VarChar, 1000);
25
_fields.Value = fieldsName;
26
SqlParameter _condition = new SqlParameter("ConditionName", SqlDbType.VarChar, 255);
27
_condition.Value = conditionName;
28
SqlParameter _orderBy = new SqlParameter("OrderBy", SqlDbType.VarChar, 255);
29
_orderBy.Value = orderByName;
30
SqlParameter _pageSize = new SqlParameter("PageSize", SqlDbType.Int, 4);
31
_pageSize.Value = pageSize;
32
SqlParameter _pageIndex = new SqlParameter("PageIndex", SqlDbType.Int, 4);
33
_pageIndex.Value = pageIndex;
34
SqlParameter _rCount = new SqlParameter("TotalCount", SqlDbType.Int, 4);
35
_rCount.Direction = ParameterDirection.Output;
36![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
try
40
{
41
recordCount = GetDateCount(connectionString, tableName, conditionName);
42
SqlDataReader sdr;
43
sdr = SqlHelper.ExecuteReader(connectionString, CommandType.StoredProcedure, "PrcPagination", new SqlParameter[] { _tblName, _fields, _condition, _orderBy, _pageSize, _pageIndex, _rCount });
44
// recordCount = Convert.ToInt32(_rCount.Value);
45
return sdr;
46![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
}
48
catch
49
{
50
recordCount = 0;
51
return null;
52
}
53
}
54![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
/// <summary>
56
/// 分页数据读取,返回类型: DataSet
57
/// by pxd in 2008-7-23
58
/// </summary>
59
/// <param name="connectionString">数据库连接字符串</param>
60
/// <param name="tableName">数据表名称</param>
61
/// <param name="primaryKey">数据主键字段</param>
62
/// <param name="fieldsName">检索字段</param>
63
/// <param name="conditionName">检索条件,Where 条件</param>
64
/// <param name="orderByName">排序字符串</param>
65
/// <param name="pageSize">每页数据量</param>
66
/// <param name="pageIndex">当前页码</param>
67
/// <param name="recordCount">数据总量</param>
68
/// <returns>分页数据读取,返回类型: SqlDataReader</returns>
69
public static DataSet GetPageDataDS(string connectionString, string tableName, string fieldsName, string conditionName, string orderByName, int pageSize, int pageIndex, out int recordCount)
70
{
71
SqlParameter _tblName = new SqlParameter("TableName", SqlDbType.VarChar, 50);
72
_tblName.Value = tableName;
73
SqlParameter _fields = new SqlParameter("FieldsName", SqlDbType.VarChar, 1000);
74
_fields.Value = fieldsName;
75
SqlParameter _condition = new SqlParameter("ConditionName", SqlDbType.VarChar, 255);
76
_condition.Value = conditionName;
77
SqlParameter _orderBy = new SqlParameter("OrderBy", SqlDbType.VarChar, 255);
78
_orderBy.Value = orderByName;
79
SqlParameter _pageSize = new SqlParameter("PageSize", SqlDbType.Int, 4);
80
_pageSize.Value = pageSize;
81
SqlParameter _pageIndex = new SqlParameter("PageIndex", SqlDbType.Int, 4);
82
_pageIndex.Value = pageIndex;
83
SqlParameter _rCount = new SqlParameter("TotalCount", SqlDbType.Int, 4);
84
_rCount.Direction = ParameterDirection.Output;
85![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
86
try
87
{
88
DataSet ds = new DataSet();
89
ds = SqlHelper.ExecuteDataset(connectionString, CommandType.StoredProcedure, "PrcPagination", new SqlParameter[] { _tblName, _fields, _condition, _orderBy, _pageSize, _pageIndex, _rCount });
90
recordCount = Convert.ToInt32(_rCount.Value);
91
return ds;
92![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
93
}
94
catch
95
{
96
recordCount = 0;
97
return null;
98
}
99
}
100![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
101![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
102
/// <summary>
103
/// 得到分页数据总量
104
/// by pxd in 2008-7-23
105
/// </summary>
106
/// <param name="conn">数据库连接字符串</param>
107
/// <param name="tableName">数据表名</param>
108
/// <param name="conditionName">检索条件</param>
109
/// <returns></returns>
110
public static int GetDateCount(string conn, string tableName, string conditionName)
111
{
112
try
113
{
114
SqlParameter _tblName = new SqlParameter("TableName", SqlDbType.VarChar, 255);
115
_tblName.Value = tableName;
116
SqlParameter _where = new SqlParameter("ConditionName", SqlDbType.VarChar, 255);
117
_where.Value = conditionName;
118
return (int)SqlHelper.ExecuteScalar(conn, CommandType.StoredProcedure, "PrcPageDateTotal", new SqlParameter[] { _tblName, _where });
119
}
120
catch
121
{
122
return 0;
123
}
124
}
125
}
126![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
56
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
58
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
60
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
62
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
63
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
64
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
65
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
66
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
67
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
68
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
69
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
70
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
71
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
72
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
73
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
74
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
76
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
77
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
78
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
79
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
80
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
81
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
82
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
83
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
84
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
85
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
86
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
87
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
88
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
89
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
90
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
91
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
92
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
93
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
94
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
95
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
96
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
97
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
98
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
99
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
100
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
101
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
102
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
103
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
104
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
105
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
106
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
107
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
108
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
109
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
110
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
111
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
112
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
113
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
114
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
115
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
116
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
117
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
118
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
119
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
120
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
121
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
122
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
123
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
124
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
125
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
126
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)