using System;
using System.Data;
using System.Windows.Forms;
using Business;
namespace Business.Base
{
/// <summary>
/// Description:Form窗体的基类。
/// 在各个窗体中,有一个DataSet用来存储取得的初始数据,
/// 该DataSet用dataSet表示。
/// 在dataSet中,包含了一个名称为Meta的DataTable,
/// 该DataTable用dataTable表示。
/// 当调用该类时,首先给dataTable添加一行数据,
/// 其中存储了该窗体的名称。
/// 在本类中,设置了抽象函数SetColumn,它的功能就是给dataTable
/// 设置其它需要的列。另外,本类还有一个Obj变量,用来传输其它
/// 初始化时候用到的数据。
/// 抽象函数Initial的作用是初始化窗体的控件。
/// </summary>
public abstract class FormBN
{
/// <summary>
///初始化的时候,用来传递数据的对象。
/// </summary>
private object Obj;
/// <summary>
/// Description:初始化窗体。
/// </summary>
/// <param name="ds">存储初始数据的DataSet</param>
protected abstract void Initial(DataSet ds);
/// <summary>
/// Description:设置DataSet中Table的列。
/// </summary>
/// <param name="ds">存储初始数据的DataSet</param>
protected abstract void SetColumn(DataSet ds);
/// <summary>
/// Description:构造函数。
/// </summary>
/// <param name="ds">存储数据的DataSet</param>
/// <param name="form">当前窗体</param>
/// <param name="Object">初始对象</param>
public FormBN(DataSet ds, Form form, object Object)
{
ds = GetData();
Obj = Object;
DataRow dr = ds.Tables[FormCommonBN.DTNAME].NewRow();
dr[FormCommonBN.FORMNAME] = form.Name;
ds.Tables[FormCommonBN.DTNAME].Rows.Add(dr);
}
/// <summary>
/// Description:取得窗体初始化数据。
/// </summary>
/// <param name="ds">存储数据的DataSet</param>
public void GetInitialData(DataSet ds)
{
// 如果DataTable为空,则出错
if ((ds.Tables[FormCommonBN.DTNAME] == null) ||
(ds.Tables[FormCommonBN.DTNAME].Rows.Count<= 0))
{
throw new Exception("没有取得需要的数据。");
}
// 初始化窗体
Initial(ds);
}
/// <summary>
/// Description:取得页面需要的DataSet。
/// </summary>
/// <returns>页面需要的DataSet</returns>
public DataSet GetData()
{
DataSet ds = new DataSet();
ds.Tables.Add(FormCommonBN.DTNAME);
//存储页面名称
ds.Tables[FormCommonBN.DTNAME].Columns.Add(FormCommonBN.FORMNAME,typeof(string));
//设置其它列
SetColumn(ds);
return ds;
}
}
}