Как использовать информацию, добавленную пользователем в список из DataContext? - PullRequest
0 голосов
/ 26 марта 2019

С помощью datacontext из основной сетки я пытаюсь использовать собранную информацию от пользователя и сохранить ее в списке, а затем использовать этот список и иметь возможность получать информацию с помощью LINQ.

ColDiv._inventaire.Add (Inventaire);

Coldiv - это один из моих cs-файлов, _inventaire - это список, а inventaire - данные из текста данных.

Код ColDiv внутри моего класса:

class CollectionsDiverses
{
    public List<Client> _client = new List<Client>();
    public List<Inventaire> _inventaire = new List<Inventaire>();
    public List<Vente> _VenteArticle = new List<Vente>();

Вот код для размещения текста данных из сетки в свойствах и внутри списка. (Списки ниже)

Inventaire inventaire = null;
frmArticle frmArticle = new frmArticle

bool? bReturn = frmArticle.ShowDialog();
if (bReturn == true)
{
    inventaire = (Inventaire)frmArticle.grdMain.DataContext;
    inventaire.Créé = DateTime.Now.ToString();
    ColDiv._inventaire.Add(inventaire);
    dgInventaire.Items.Refresh()
}

Теперь, по логике, оно сохранено. Теперь, из другого источника, TextBox с событием TextChanged, перехватывающим идентификатор (например) клиента:

private void TxtNoArticle_TextChanged(object sender, TextChangedEventArgs e)
{
    try
    {
        _venteEdition.NoArticle = Int32.Parse(txtNoArticle.Text); 
        _venteEdition.ArticleComplet = ArticleCompletToString(_venteEdition.NoArticle);
        lblArticleComplet.Content = _venteEdition.ArticleComplet;
    }
    catch (Exception){}

Затем перейдите к LINQ из метода, чтобы найти клиента с идентификатором, введенным пользователем:

public string ArticleCompletToString(int iNombre)
{
    string sArticle = "";

    var req = from art in ColDiv._inventaire
              where art.No == iNombre // art.No is the ID the user wants and iNombre is the ID the user entered in the TextBox
              select new
              {
                  art.Modèle,
                  art.Marque
              };
    foreach (var i in req)
    {
        sArticle = i.Modèle + " " + i.Marque;
    }
    return sArticle;

Он должен возвращать именно ту информацию, которую я хочу получить из списка, но, похоже, он даже не создает нового Inventaire.

1 Ответ

0 голосов
/ 27 марта 2019

Хорошо, нашел проблемы. Я инициализировал ColDiv три раза в трех разных формах Таким образом, единственное, что вам нужно сделать, это сделать вашу инициализацию основной и сделать ее общедоступной и статичной. В другой форме для инициализации просто сделайте следующее:

public partial class frmVentes : Window
{
    private CollectionsDiverses _ColDiv;

    public frmVentes()
    {
        InitializeComponent();
        this._ColDiv = MainWindow.ColDiv;
    }

//...

В вашем основном коде это выглядит так:

public partial class MainWindow : Window
{
    public static CollectionDiverses ColDiv = new CollectionsDiverses();


    public MainWindow()
    {
        InitializeComponent();
    }
//...

Теперь в вашем классе CollectionsDiverses вы хотите изменить его на общедоступный, как это

public class CollectionsDiverses
{
//...

Вам нужно будет создать внутреннее свойство для вашего списка:

private List<Client> client = new List<Client>();
private List<Inventaire> inventaire = new List<Inventaire>();
//...

internal List<Client> Client { get => client; set => client = value; }
internal List<Vente> VenteArticle { get => venteArticle; set => venteArticle = value; }
//...

Вот и все! Теперь это исправлено, и я могу использовать информацию между различными формами!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...