如何使用OO编程风格在datagridview中显示数据?

时间:2014-11-07 20:22:55

标签: c# oop

这是我创建的代码,用于在我的数据库中显示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);
        }

    }
}

}

2 个答案:

答案 0 :(得分:0)

通过面向对象的编程风格,您可能意味着使用设计模式。

您应该检查Model-View-ViewModel模式。

简单来说,MVVM使用三个文件:

  1. 视图:控制数据在屏幕上显示方式的文件,通常用XAML编写,用于现代Windows应用程序
  2. 模型:'实体'您要呈现的内容,在本例中为数据库管理类
  3. 视图模型:控制视图和模型之间的连接。它通常隐藏模型的实现细节,并为视图提供所需的所有数据

答案 1 :(得分:0)

在开始实现更加可靠,面向对象设计的一个非常好的地方就是开始考虑如何以ViewPurchase形式分离关注。目前,这门课负责很多事情:

  • 连接数据库
  • 使用开放式数据库连接获取原始数据
  • 过滤数据以用于演示目的
  • 展示过滤后的数据
  • 完成后关闭数据库连接

通过从这个类中取出一些这些职责并将它们放入一个新类,你将从所需的业务逻辑中解耦 UI逻辑(你的表单类)为它提供数据。这将问题分解为两个不同的部分,这些部分更容易单独解决,而不是一次担心所有事情。当您创建这个新的业务逻辑类时,您可以在ViewPurchase实例化时将其实例提供给private void ViewPurchase_Load(object sender, EventArgs e) { DataTable myData = _dataRetriever.GetData(); dataGridView1.DataSource = myData; } ,并简单地调用它来获取您的数据:

_dataRetriever

请注意上面示例中的实例变量ViewPurchase。理想情况下,此变量将填充在interface IDataRetriever { DataTable GetData(); } class DataRetriever : IDataRetriever { public DataTable GetData() { // TODO: How do we get the data? } } 构造函数中并继承某种接口,以便您将来创建单元测试并单独测试您的各个类。这几乎是依赖注入背后的整个概念,这是OOP的另一个好习惯。它可能看起来像这样:

public partial class ViewPurchase : Form
{
    readonly IDataRetriever _dataRetriever;

    public ViewPurchase(IDataRetriever dataRetriever, string aa)
    {
        _dataRetriever = dataRetriever;
        label2.Text = aa;
    }
}
{{1}}

我知道,如果你只是想在面向对象的设计上削减思想,这可能需要很多东西,但如果你花时间尝试消化我所拥有的每一件事在这里介绍,我认为你已经发现你已经熟悉了核心概念 - 它只是在学习将它们组合在一起的新方法!我们在这里真正做的就是创建小班,然后从他们那里编写更大的单元。

我希望这个答案有助于学习面向对象编程,并且好运!“