猿问

如何利用用户从 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()

}

现在从逻辑上讲,它被存储了。现在,从另一个来自带有 TextChanged 事件的 TextBox 捕获(例如)客户端的 ID:


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 来查找具有用户输入的 ID 的客户端:


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。


慕的地6264312
浏览 82回答 1
1回答

汪汪一只猫

好的,找到了问题。我以三种不同的形式对 ColDiv 进行了三次初始化,因此您唯一要做的就是在 main 中进行初始化,并将其设为公开和静态。在另一种形式中,只需按以下方式初始化它:public partial class frmVentes : Window{&nbsp; &nbsp; private CollectionsDiverses _ColDiv;&nbsp; &nbsp; public frmVentes()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; InitializeComponent();&nbsp; &nbsp; &nbsp; &nbsp; this._ColDiv = MainWindow.ColDiv;&nbsp; &nbsp; }//...在您的主代码中,它看起来像这样:public partial class MainWindow : Window{&nbsp; &nbsp; public static CollectionDiverses ColDiv = new CollectionsDiverses();&nbsp; &nbsp; public MainWindow()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; InitializeComponent();&nbsp; &nbsp; }//...现在,在您的 CollectionsDiverses 类中,您想像这样将其更改为 publicpublic 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; }//...而已 !现在已经修复了,我可以使用不同表单之间的信息了!
随时随地看视频慕课网APP
我要回答