下面这段代码是一个完整的文件,原代码来自WROX.COM,演示了DataGrid的稍进一步的应用。
using System;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;
![](/Images/OutliningIndicators/None.gif)
/// <summary>
/// This class provides an example of creating and using a data grid.
/// </summary>
public class DataSourceDataView : System.Windows.Forms.Form
{
private System.Windows.Forms.Button retrieveButton;
private System.Windows.Forms.DataGrid dataGrid;
private System.Windows.Forms.DataGrid dataGrid2;
private System.Windows.Forms.ComboBox comboBox1;
![](/Images/OutliningIndicators/InBlock.gif)
/// <summary>
/// Construct the window.
/// </summary>
/// <remarks>
/// This method constructs the window by creating both the data grid and the button.
/// </remarks>
public DataSourceDataView()
{
/* this.AutoScaleBaseSize = new System.Drawing.Size (5, 13);
this.ClientSize = new System.Drawing.Size (464, 253);
this.Text = "04_DataSourceDataView" ;
this.dataGrid = new System.Windows.Forms.DataGrid ();
dataGrid.BeginInit ();
dataGrid.Location = new System.Drawing.Point (8, 8);
dataGrid.Size = new System.Drawing.Size (448, 208);
dataGrid.TabIndex = 0;
dataGrid.Anchor = AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right ;
this.Controls.Add (this.dataGrid);
dataGrid.EndInit ();
this.retrieveButton = new System.Windows.Forms.Button ();
retrieveButton.Location = new System.Drawing.Point (384, 224);
retrieveButton.Size = new System.Drawing.Size (75, 23);
retrieveButton.TabIndex = 1;
retrieveButton.Anchor = AnchorStyles.Bottom | AnchorStyles.Right ;
retrieveButton.Text = "Retrieve";
retrieveButton.Click += new System.EventHandler (this.retrieveButton_Click);
this.Controls.Add (this.retrieveButton); */
![](/Images/OutliningIndicators/InBlock.gif)
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(464, 493);
this.Text = "04_DataSourceDataView";
this.dataGrid = new System.Windows.Forms.DataGrid();
dataGrid.BeginInit();
dataGrid.CaptionText = "From Database";
dataGrid.Font = new System.Drawing.Font("Tahoma", 8);
dataGrid.Location = new System.Drawing.Point(8, 8);
dataGrid.Size = new System.Drawing.Size(448, 208);
dataGrid.TabIndex = 0;
dataGrid.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
this.Controls.Add(this.dataGrid);
dataGrid.EndInit();
![](/Images/OutliningIndicators/InBlock.gif)
this.retrieveButton = new System.Windows.Forms.Button();
retrieveButton.Location = new System.Drawing.Point(8, 224);
retrieveButton.Size = new System.Drawing.Size(75, 23);
retrieveButton.TabIndex = 1;
retrieveButton.Anchor = AnchorStyles.Top | AnchorStyles.Left;
retrieveButton.Text = "Retrieve";
retrieveButton.Click += new System.EventHandler(this.retrieveButton_Click);
this.Controls.Add(this.retrieveButton);
![](/Images/OutliningIndicators/InBlock.gif)
this.comboBox1 = new System.Windows.Forms.ComboBox();
comboBox1.Location = new System.Drawing.Point(96, 224);
comboBox1.Size = new System.Drawing.Size(360, 21);
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox1.TabIndex = 2;
comboBox1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);
comboBox1.Items.AddRange(new object[8] { "Added", "CurrentRows", "Deleted", "ModifiedCurrent", "ModifiedOriginal", "None", "OriginalRows", "Unchanged" });
this.Controls.Add(this.comboBox1);
![](/Images/OutliningIndicators/InBlock.gif)
this.dataGrid2 = new System.Windows.Forms.DataGrid();
dataGrid2.BeginInit();
dataGrid2.Location = new System.Drawing.Point(8, 256);
dataGrid2.Size = new System.Drawing.Size(448, 232);
dataGrid2.DataMember = "";
dataGrid2.CaptionText = "Filtered";
dataGrid2.Font = new System.Drawing.Font("Tahoma", 8);
dataGrid2.TabIndex = 3;
dataGrid2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Bottom | AnchorStyles.Right;
this.Controls.Add(this.dataGrid2);
dataGrid2.EndInit();
![](/Images/OutliningIndicators/InBlock.gif)
}
![](/Images/OutliningIndicators/InBlock.gif)
protected void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
DataViewRowState state;
![](/Images/OutliningIndicators/InBlock.gif)
switch (comboBox1.Text)
{
case "Added":
state = DataViewRowState.Added;
break;
case "CurrentRows":
state = DataViewRowState.CurrentRows;
break;
case "Deleted":
state = DataViewRowState.Deleted;
break;
case "ModifiedCurrent":
state = DataViewRowState.ModifiedCurrent;
break;
case "ModifiedOriginal":
state = DataViewRowState.ModifiedOriginal;
break;
case "None":
state = DataViewRowState.None;
break;
case "OriginalRows":
state = DataViewRowState.OriginalRows;
break;
case "Unchanged":
state = DataViewRowState.Unchanged;
break;
default:
state = DataViewRowState.OriginalRows;
break;
}
![](/Images/OutliningIndicators/InBlock.gif)
try
{
((DataView)dataGrid2.DataSource).RowStateFilter = state;
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.ToString());
![](/Images/OutliningIndicators/InBlock.gif)
}
}
![](/Images/OutliningIndicators/InBlock.gif)
/// <summary>
/// Retrieve the data
/// </summary>
/// <param name="sender"> </param>
/// <param name="e"> </param>
protected void retrieveButton_Click(object sender, System.EventArgs e)
{
retrieveButton.Enabled = false;
![](/Images/OutliningIndicators/InBlock.gif)
string select = "SELECT * FROM MainInfo";
![](/Images/OutliningIndicators/InBlock.gif)
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Manio\My Documents\PrintManager\program\PrintManageV1\DataBase\PrintDB.mdb");
![](/Images/OutliningIndicators/InBlock.gif)
OleDbDataAdapter da = new OleDbDataAdapter(select, con);
![](/Images/OutliningIndicators/InBlock.gif)
DataSet ds = new DataSet();
![](/Images/OutliningIndicators/InBlock.gif)
da.Fill(ds, "MainInfo");
![](/Images/OutliningIndicators/InBlock.gif)
dataGrid.SetDataBinding(ds, "MainInfo");
![](/Images/OutliningIndicators/InBlock.gif)
DataView dv = new DataView(ds.Tables["MainInfo"]);
![](/Images/OutliningIndicators/InBlock.gif)
dataGrid2.SetDataBinding(dv, null);
![](/Images/OutliningIndicators/InBlock.gif)
comboBox1.Text = "OriginalRows";
}
![](/Images/OutliningIndicators/InBlock.gif)
/// <summary>
/// Display the application window
/// </summary>
static void Main()
{
Application.Run(new DataSourceDataView());
}
}
DataViewManager的用法:
DataViewManager创建时会同时创建一个DataSet中DataTable的DataView,根据过滤条件改变显示出来的行或者行的状态。即使不希望过滤数据,也可以把DataSet包装到DataViewManager中,以进行显示,因为这样在修改代码时可以使用更多的选项。
先来看一下DataViewManager的一个简单应用。下面的例子是本博客中另一篇文章《DataGrid实例(简单易懂,无复杂功能,适合初学者)》的一个实例改过来的,我们改用DataViewManager来显示数据,一看就明白。代码如下,和《DataGrid一文》不同之处已注明。
using System;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
//Professional C# 2nd的DATAGRID实例
/// <summary>
/// This class provides an example of creating and using a data grid.
/// </summary>
public class DisplayTabularData : System.Windows.Forms.Form
{
private System.Windows.Forms.Button retrieveButton;
private System.Windows.Forms.DataGrid dataGrid;
![](/Images/OutliningIndicators/InBlock.gif)
/// <summary>
/// Construct the window.
/// </summary>
/// <remarks>
/// This method constructs the window by creating both the data grid and the button.
/// </remarks>
public DisplayTabularData()
{
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(464, 253);
this.Text = "01_DisplayTabularData";
this.dataGrid = new System.Windows.Forms.DataGrid();
dataGrid.BeginInit();
dataGrid.Location = new System.Drawing.Point(8, 8);
dataGrid.Size = new System.Drawing.Size(448, 208);
dataGrid.TabIndex = 0;
dataGrid.Anchor = AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
this.Controls.Add(this.dataGrid);
dataGrid.EndInit();
this.retrieveButton = new System.Windows.Forms.Button();
retrieveButton.Location = new System.Drawing.Point(384, 224);
retrieveButton.Size = new System.Drawing.Size(75, 23);
retrieveButton.TabIndex = 1;
retrieveButton.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
retrieveButton.Text = "Retrieve";
retrieveButton.Click += new System.EventHandler(this.retrieveButton_Click);
this.Controls.Add(this.retrieveButton);
}
![](/Images/OutliningIndicators/InBlock.gif)
/// <summary>
/// Retrieve the data
/// </summary>
/// <param name="sender"> </param>
/// <param name="e"> </param>
protected void retrieveButton_Click(object sender, System.EventArgs e)
{
retrieveButton.Enabled = false;
![](/Images/OutliningIndicators/InBlock.gif)
string source = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Manio\My Documents\PrintManager\program\PrintManageV1\DataBase\PrintDB.mdb";
string select = "SELECT * FROM MainInfo";
![](/Images/OutliningIndicators/InBlock.gif)
////////////////////////////////
//填充DataSet的步骤
//1、使用数据库连接字符串创建数据库连接对象
// 2、用SQL查询语句和数据库连接对象创建数据库适配器dataAdapter
// 3、使用DataAdapter的Fill 方法填充DataSet
![](/Images/OutliningIndicators/InBlock.gif)
OleDbConnection OleCon = new OleDbConnection(source);
![](/Images/OutliningIndicators/InBlock.gif)
OleDbDataAdapter da = new OleDbDataAdapter(select,OleCon);
![](/Images/OutliningIndicators/InBlock.gif)
DataSet ds = new DataSet();
![](/Images/OutliningIndicators/InBlock.gif)
da.Fill(ds, "MainInfo");
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
//不用之处
////////////////////////////////////////////////////////////////////////////////////////
![](/Images/OutliningIndicators/InBlock.gif)
DataViewManager dvm = new DataViewManager(ds);
![](/Images/OutliningIndicators/InBlock.gif)
dvm.DataViewSettings["MainInfo"].RowFilter = "D_ID=2";
dataGrid.SetDataBinding(dvm, "MainInfo");
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
}
![](/Images/OutliningIndicators/InBlock.gif)
/// <summary>
/// Display the application window
/// </summary>
static void Main()
{
Application.Run(new DisplayTabularData());
}
}
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
DataViewManager创建时会同时创建一个DataSet中DataTable的DataView,根据过滤条件改变显示出来的行或者行的状态。即使不希望过滤数据,也可以把DataSet包装到DataViewManager中,以进行显示,因为这样在修改代码时可以使用更多的选项。
先来看一下DataViewManager的一个简单应用。下面的例子是本博客中另一篇文章《DataGrid实例(简单易懂,无复杂功能,适合初学者)》的一个实例改过来的,我们改用DataViewManager来显示数据,一看就明白。代码如下,和《DataGrid一文》不同之处已注明。
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)