【问题标题】:Add a new Row in DataGridView with incremented value every time the event is fired每次触发事件时,在 DataGridView 中添加一个具有递增值的新行
【发布时间】:2019-07-26 06:18:20
【问题描述】:

我有一个表,它的 ID、名称和 ActiveStatus 在按钮单击事件中设置为默认值。每当我单击时,它都会向 datagridview 添加一个新行,但如果我想在其下添加一个具有先前值的增量值的新行,它什么也不做。就像已经存在一个编号为 1 的 id,它应该添加一个 id = 2 的新行。或者如果它是空的,它应该添加 id = 1。

   MyDatabase mydata = new MyDatabase();
   List<MyDatabase> listmydata = new List<MyDatabase>();

        mydata.id = "1";
        mydata.Name = "YO";
        mydata.ActiveStatus= true;
        listmydata.Add(mydata);
        dataGridView1.DataSource = listmydata.ToList<MyDatabase>();

//这只会增加1个新行,如果我们再次点击按钮什么也不做

【问题讨论】:

  • 请将监听器和数据库架构添加到问题中
  • List&lt;MyDatabase&gt; listmydata = new List&lt;MyDatabase&gt;();:您正在创建一个新的List&lt;MyDatabase&gt;,向其中添加一个对象,然后将此列表及其单个对象用作您的 DGV 的数据源。当然只显示一个对象。在其他地方声明listmydata(作为一个字段,可能你的上下文不清楚),然后在需要时向其中添加元素。可能,发布MyDatabase 的实际类型。另外,看看BindingSource 类。也不清楚 ASP.Net 与 WinForms 的关系。

标签: c# windows winforms


【解决方案1】:

尝试宣布一个全局类变量,它将计算您的新元素,您可以将其用作 MyDatabase 列表中的 id 字段。

public class Form...
{
   private int elemsCount = 0;
   public event(...)
   {
      MyDatabase mydata = new MyDatabase();
      List<MyDatabase> listmydata = new List<MyDatabase>();

      mydata.id = elemsCount.ToString();
      mydata.Name = "YO";
      mydata.ActiveStatus= true;
      listmydata.Add(mydata);
      dataGridView1.DataSource = listmydata.ToList<MyDatabase>();
      elemsCount++;
   }
}

【讨论】:

  • 请“放弃”我的回答
  • 我很愿意,但我的声誉很低,无法给任何人任何支持。
  • @SarthakNarang 您可以点击“复选标记”按钮,该按钮位于“向下按钮”下方。
  • @SarthakNarang TY
  • 很高兴你的帮助。
【解决方案2】:

与 Vladimir 的回答类似,我建议您需要一个全局变量来计算此方法已执行的次数。但是,您可能也希望将 List 变量设为全局变量。

public class YourClass
{
   private int numExecutions = 0;
   private List<MyDatabase> listmydata = new List<MyDatabase>();
   public YourEvent(EventArgs e)
   {  
      MyDatabase mydata = new MyDatabase();
      mydata.id = numExecutions.toString();
      mydata.Name = "YO";
      mydata.ActiveStatus= true;
      listmydata.Add(mydata);
      dataGridView1.DataSource = listmydata.ToList<MyDatabase>();
      numExecutions++;
   }
}

【讨论】:

    猜你喜欢
    • 2018-08-09
    • 2011-12-22
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    相关资源
    最近更新 更多