将数据添加到datagridview而不丢失现有行

时间:2018-11-13 12:57:33

标签: c#

大家好,我是C#的新手,现在我正尝试使用查询和调用将行添加到datagridview中,但是问题是每当我尝试在表中插入数据时都会重写所有行,因此只有一行具有最后一个经过验证的值在行中显示。我尝试了很多事情,但我不知道问题出在哪里。这是我的代码:

 XDocument xdoc = XDocument.Load("demo.xml");
         var query = from key in xdoc.Descendants("user")
                     where key != null && (key.Element("clientno").Value == recieveddata)
                     select new
                     {
                         //listBox3.Items.Add(key.Element("name")+""+key.Element("lastname"));
                         نام = key.Element("name").Value +" "+ key.Element("lastname").Value,
                        // خانوادگی = key.Element("lastname").Value,
                       ورزش = key.Element("noeozviat").Value,
                        تاریخ = key.Element("date").Value,
                         عضویت = key.Element("duration").Value,
                        جلسات = key.Element("jalasat").Value
                     };dataGridView1.Invoke(new Action(() => dataGridView1.DataSource = query.ToList()));

请帮助我。

1 个答案:

答案 0 :(得分:0)

您正在创建一个新列表,并将其每次设置为数据源。您应该做的是为每个元素创建一个类(目前使用匿名类型),然后在运行查询并将此列表设置为新数据源时添加新元素。

类似这样的东西:

class Thing
{ 
   public string نام {get;set;}
   // Etc
}

List<Thing> items = new List<Thing>(); // <- should be a class member variable, not a local variable

XDocument xdoc = XDocument.Load("demo.xml");
var newItems = from key in xdoc.Descendants("user")
                 where key != null && (key.Element("clientno").Value == recieveddata)
                 select new Thing
                 {
                     نام = key.Element("name").Value +" "+ key.Element("lastname").Value,
                   ورزش = key.Element("noeozviat").Value,
                    تاریخ = key.Element("date").Value,
                     عضویت = key.Element("duration").Value,
                    جلسات = key.Element("jalasat").Value
                 };
items.AddRange(newItems.ToList());
dataGridView1.Invoke(new Action(() => dataGridView1.DataSource = items));