Как заполнить DataGridView в проекте MVP? - PullRequest
0 голосов
/ 24 июня 2018

Предыстория: я создаю (пытаюсь) приложение для управления запасами для Android.Для тестирования репликации данных я сделал простое приложение WinForms.Цель этого приложения - просто загрузить данные из БД SQL Server (имя таблицы БД - T_STOCK).Для манипулирования данными я использовал Linq, а для загрузки - DataGridView, а для архитектуры приложения я пытаюсь использовать MVP.

Проблема: мне трудно заполнить DataGrid данными.Я уже пытался передать дырочную сетку данных как свойство, а теперь просто источник данных.Я что-то упустил или это должно быть сделано по-другому?

Это часть кода моего проекта:

Модель:

using System;
using System.Linq;
using System.Configuration;
using InventoryManagment.Services.DE.SQLServer;
using System.Windows.Forms;

namespace InventoryManagment.Models
{
    public class Stock
    {
        private string _ConnectionString;
        object _DgView;

        public object DataGridViewItems { get; set; }

        DEDataContext oDB;
        BindingSource bindingSource;
        DataGridView dataGridView;

        public void GetStockAllRecords()
        {
            _ConnectionString = ConfigurationManager.
                ConnectionStrings["SimpleInventoryManagment_temp." +
                "Properties.Settings.dbInventoryMngConnectionString"].ToString();
            oDB = new Services.DE.SQLServer.DEDataContext(_ConnectionString);
            //int count = (from row in oDB.T_STOCKs select row).Count();

            bindingSource = new BindingSource();
            dataGridView = new DataGridView();
            var stock = from t_stock in oDB.T_STOCKs
                        select new
                        {
                            ID = t_stock.F_ID,
                            Name = t_stock.F_NAME,
                            Barcode = t_stock.F_BARCODE
                        };
            bindingSource.DataSource = stock;
            dataGridView.DataSource = bindingSource;
            _DgView = dataGridView.DataSource;
        }
    }
}

Просмотр:

using System;

namespace InventoryManagment.Views
{
    public interface IStock
    {
        object DataGridViewItems { get; set; }
    }
}

Ведущий:

using System;
using System.Linq;
using InventoryManagment; 
using System.Windows.Forms;

namespace InventoryManagment.Presenters
{
    public class StockPresenter
    {
        Views.IStock StockView;
        Models.Stock stock = new Models.Stock();

        public StockPresenter(Views.IStock view) { StockView = view; }

        public void GetStockAllRecords()
        {
            stock.GetStockAllRecords();
            StockView.DataGridViewItems = stock.DataGridViewItems;
        }
    }
}

Форма

using System;
using System.Windows.Forms;
using InventoryManagment;

namespace InventoryManagment
{
    public partial class FormMain : Form, Views.IStock
    {
        string BtnAddMsgBoxText;

        public FormMain()
        {
            InitializeComponent();
        }

        object Views.IStock.DataGridViewItems
        {
            get
            {
                return GrItems.DataSource;
            }
            set
            {
                GrItems.DataSource = value;
            }
        }

        private void FormMain_Load(object sender, EventArgs e)
        {
            Presenters.StockPresenter presenter = 
                new Presenters.StockPresenter(this);
            presenter.GetStockAllRecords();
        }
    }
}

1 Ответ

0 голосов
/ 25 июня 2018

Ну, я думаю, что я задумался. @Реза Агаи был прав.

public void GetStockAllRecords()
{
    _ConnectionString = ConfigurationManager.
        ConnectionStrings["SimpleInventoryManagment_temp." +
        "Properties.Settings.dbInventoryMngConnectionString"].ToString();
    oDB = new Services.DE.SQLServer.DEDataContext(_ConnectionString);

    var stock = from t_stock in oDB.T_STOCKs
                select new
                {
                    ID = t_stock.F_ID,
                    Name = t_stock.F_NAME,
                    Barcode = t_stock.F_BARCODE
                };
    DataGridViewItems  = stock;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...