sharpquerydataview.cs
来自「SharpDevelop2.0.0 c#开发免费工具」· CS 代码 · 共 231 行
CS
231 行
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Luc Morin" email=""/>
// <version>$Revision: 993 $</version>
// </file>
using System;
using System.Data;
using System.Windows.Forms;
using ICSharpCode.SharpDevelop.Gui;
using SharpQuery.SchemaClass;
using SharpQuery.Collections;
namespace SharpQuery.Gui.DataView
{
/// <summary>
/// Description of the view content
/// </summary>
public class SharpQueryDataView : AbstractViewContent
{
DataGrid pDataGrid;
ISchemaClass pSchema;
#region AbstractViewContent requirements
/// <summary>
/// The <see cref="System.Windows.Forms.Control"/> representing the view
/// </summary>
///
public override Control Control
{
get
{
return pDataGrid;
}
}
/// <summary>
/// Creates a new MyView object
/// </summary>
public SharpQueryDataView(ISchemaClass entity, int lines, SharpQuerySchemaClassCollection parameters)
{
if (entity == null)
{
throw new ArgumentNullException("entity");
}
TitleName = SharpQuery.SchemaClass.AbstractSharpQuerySchemaClass.RemoveBracket(entity.NormalizedName);
this.pDataGrid = new DataGrid();
this.pDataGrid.CaptionVisible = true;
this.pDataGrid.DataMember = "";
this.pDataGrid.Dock = System.Windows.Forms.DockStyle.Fill;
this.pDataGrid.HeaderForeColor = System.Drawing.SystemColors.ControlText;
this.pDataGrid.Location = new System.Drawing.Point(0, 0);
this.pDataGrid.Name = "dataGrid";
this.pDataGrid.Size = new System.Drawing.Size(292, 266);
this.pDataGrid.TabIndex = 0;
this.Schema = entity;
this.Datatable = this.Schema.Execute(lines, parameters);
// if ( this.Datatable == null )
// {
// WorkbenchSingleton.Workbench.ViewContentCollection.Remove( this );
// }
}
/// <summary>
/// Loads a new file into MyView
/// </summary>
public override void Load(string fileName)
{
// TODO
throw new System.NotImplementedException();
}
/// <summary>
/// Refreshes the view
/// </summary>
public override void RedrawContent()
{
// TODO: Refresh the whole view control here, renew all resource strings whatever
// Note that you do not need to recreate the control.
}
/// <summary>
/// Cleans up all used resources
/// </summary>
public override void Dispose()
{
// TODO: Clean up resources in this method
Control.Dispose();
}
#endregion
public ISchemaClass Schema
{
get
{
return this.pSchema;
}
set
{
this.pSchema = value;
}
}
///<summary>
/// <see cref="System.Data.DataTable">DataTable</see> to display in the
/// <see cref="System.Windows.Forms.DataGrid">DataGrid</see>
/// </summary>
public object Datatable
{
get
{
return this.pDataGrid.DataSource;
}
set
{
removeChangedHandler();
this.pDataGrid.DataSource = value;
this.pDataGrid.DataMember = null;
this.pDataGrid.AllowNavigation = true;
DataSet dataset = this.pDataGrid.DataSource as DataSet;
if (dataset != null)
{
if (dataset.Tables.Count == 1)
{
this.pDataGrid.DataMember = dataset.Tables[0].TableName;
this.pDataGrid.AllowNavigation = false;
}
}
addChangedHandler();
}
}
private void removeChangedHandler()
{
if (this.pDataGrid.DataSource != null)
{
DataSet dataset = this.pDataGrid.DataSource as DataSet;
if (dataset != null)
{
foreach (DataTable table in dataset.Tables)
{
table.RowChanged -= new DataRowChangeEventHandler(this.UpdateTable);
table.RowDeleted -= new DataRowChangeEventHandler(this.DeleteRow);
}
}
else
{
(this.pDataGrid.DataSource as DataTable).RowChanged -= new DataRowChangeEventHandler(this.UpdateTable);
(this.pDataGrid.DataSource as DataTable).RowDeleted -= new DataRowChangeEventHandler(this.DeleteRow);
}
}
}
private void addChangedHandler()
{
if (this.pDataGrid.DataSource != null)
{
DataSet dataset = this.pDataGrid.DataSource as DataSet;
if (dataset != null)
{
foreach (DataTable table in dataset.Tables)
{
table.RowChanged += new DataRowChangeEventHandler(this.UpdateTable);
table.RowDeleted += new DataRowChangeEventHandler(this.DeleteRow);
}
}
else
{
(this.pDataGrid.DataSource as DataTable).RowChanged += new DataRowChangeEventHandler(this.UpdateTable);
(this.pDataGrid.DataSource as DataTable).RowDeleted += new DataRowChangeEventHandler(this.DeleteRow);
}
}
}
public void UpdateTable(object sender, DataRowChangeEventArgs e)
{
if (Datatable != null)
{
switch (e.Action)
{
case DataRowAction.Add:
this.Schema.Connection.InsertRow(this.Schema, e.Row);
break;
case DataRowAction.Change:
this.Schema.Connection.UpDateRow(this.Schema, e.Row);
break;
}
}
}
public void DeleteRow(object sender, DataRowChangeEventArgs e)
{
switch (e.Action)
{
case DataRowAction.Delete:
this.Schema.Connection.DeleteRow(this.Schema, e.Row);
break;
}
}
public override void Save(string fileName)
{
DataSet dataset = this.pDataGrid.DataSource as DataSet;
if (dataset == null)
{
DataTable dataTable = this.pDataGrid.DataSource as DataTable;
if (dataTable != null)
{
dataset = new DataSet();
dataset.Tables.Add(dataTable);
}
}
dataset.WriteXml(fileName);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?