591617 (1) [Avatar] Offline
#1
Backstory: I am creating (trying) an inventory management application for Android. For data replication testing I made a simple WinForms application. Purpose of this app is simply to load data from SQL Server DB (DB table name is T_STOCK). For data manipulation I used Linq and for loading I used DataGridView and for app architecture, I am trying to use MVP.

Problem: I am having a hard time to fill DataGrid with data. I already tried to pass hole data grid as a property and now just a data source. Am I missing something or it should be done in a different way?

This is part of the code that is in my project:

Model:

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

using System;

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

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

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



Thnak you