逆水行船

别人的天堂,是我的异乡;无端的繁华,倍添我的惆怅

 

C/S中的MVC(2)

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;
  }
 }
}

posted on   荣-  阅读(380)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构

导航

统计

点击右上角即可分享
微信分享提示