如何用OO编程风格在datagridview中显示数据
本文关键字:datagridview 显示 数据 风格 何用 OO 编程 | 更新日期: 2023-09-27 18:29:33
这是我创建的代码,用于显示数据库中datagridview上的所有数据,工作正常。但我希望使用面向对象编程,这意味着这个表单只用于调用方法,并且该方法是从其他.cs文件创建的,但我不知道从哪里开始。可以教我如何在OOProgramming风格上做到这一点吗?谢谢你的帮助,非常感谢。
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace PreviewRecord
{
public partial class ViewPurchase : Form
{
OleDbConnection myConnection;
OleDbDataAdapter adap;
DataSet ds;
public ViewPurchase(string aa)
{
InitializeComponent();
label2.Text = aa;
}
private void ViewPurchase_Load(object sender, EventArgs e)
{
try
{
myConnection = new OleDbConnection();
myConnection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:'Users'lenovo'Desktop'DataEntry'DataEntry'Database'Purchase.accdb";
myConnection.Open();
adap = new OleDbDataAdapter("SELECT * FROM " + label2.Text, myConnection);
ds = new System.Data.DataSet();
adap.Fill(ds, "Account_Records");
dataGridView1.DataSource = ds.Tables[0];
}
catch (Exception ex)
{
Console.WriteLine("Exception in DBHandler", ex);
}
}
}
}
在迈向更坚实的面向对象设计的道路上,一个非常好的起点是开始考虑如何在ViewPurchase
形式中分离关注点。目前,这个类负责很多事情:
- 连接到数据库
- 使用开放数据库连接获取原始数据
- 筛选出用于演示的数据
- 呈现过滤后的数据
- 数据库连接完成后关闭
通过将这些职责中的一些从这个类中移除并放到一个新的类中,您将将UI逻辑(表单类)与为其提供数据所需的业务逻辑解耦。这将问题分解为两个不同的部分,更容易单独解决,而不是同时担心所有事情。当您创建这个新的业务逻辑类时,您可以在它被实例化时向ViewPurchase
提供它的实例,并简单地像这样调用它来获取数据:
private void ViewPurchase_Load(object sender, EventArgs e)
{
DataTable myData = _dataRetriever.GetData();
dataGridView1.DataSource = myData;
}
请注意上面示例中的实例变量_dataRetriever
。理想情况下,该变量将填充在ViewPurchase
构造函数中,并继承某种接口,以便允许您在未来创建单元测试,并单独测试各个类。这几乎就是依赖注入背后的全部概念,这是OOP中的另一个良好实践。它可能看起来有点像这样:
interface IDataRetriever
{
DataTable GetData();
}
class DataRetriever : IDataRetriever
{
public DataTable GetData()
{
// TODO: How do we get the data?
}
}
public partial class ViewPurchase : Form
{
readonly IDataRetriever _dataRetriever;
public ViewPurchase(IDataRetriever dataRetriever, string aa)
{
_dataRetriever = dataRetriever;
label2.Text = aa;
}
}
我知道,如果你只是想在面向对象的设计上下功夫,这可能是一个很大的收获,但如果你慢慢来,试着消化我在这里介绍的每一部分,我想你会发现你已经熟悉了核心概念——这真的只是学习将它们组合在一起的新方法!我们在这里真正做的是创建小类,并从中组成一个更大的单元。
我希望这个答案能有所帮助,祝你在学习面向对象编程时好运!
所谓面向对象编程风格,可能是指使用设计模式。
您应该签出模型视图视图模型模式。
简单地说,MVVM使用三个文件:
- 视图:一个控制数据在屏幕上显示方式的文件,通常用XAML为现代Windows应用程序编写
- 模型:您想要呈现的"实体",在本例中是数据库管理类
- 视图模型:控制视图和模型之间的连接。它通常隐藏模型的实现细节,并为视图提供所需的所有数据