用日期取决于用户输入的日期填充datagridview

时间:2019-02-16 18:30:54

标签: c# winforms

我是编程新手,只了解基础知识。我只是想知道如何实现这一目标。谢谢,我有一个日期选择器,datagridview,textbox1和tb_amount。我想用依赖于日期选择器的日期和依赖于textbox1的计数填充datagridview,而tb_amount将根据计数进行划分。像这样:例如

date picker = 2-1-2019
textbox1    = 3
tb_amount   = 15

dgv中的输出应如下所示:

Amount |  Date
-------------------
5      |  3-1-2019
5      |  4-1-2019
5      |  5-1-2019

1 个答案:

答案 0 :(得分:0)

达成目标的想法如下:

您需要生成集合,其中每个元素代表一行,并将该集合作为数据源分配给datagridview。选择哪种集合和哪种元素类取决于您允许用户与网格进行哪种交互(添加/删除行,编辑行等)。请参阅this page的建议。

datagridview中的每一列显示数据源中Elements的属性值。要定义列显示的属性,请使用列的DataPropertyName属性(请参见DataPropertyName)。如果您未在datagridview中定义任何列,则将为每个公共属性创建一个列(该列的标题为属性Name)。

现在,在您的特定情况下,您可能有一个用于处理数据的类。我希望您有一个包含日期的属性,一个包含日期的属性,所以像这样:

public class MyClass
{
    public DateTime Date {get; set;}
    public int Amount {get; set;}
    // and some other properties
}

您的datagridview应该有两列:

  • 列1:HeaderText =“我的金额标题”和DataPropertyName =“ Amout”
  • 第2列:HeaderText =“我的日期标题”和DataPropertyName =“日期”

现在您可以按以下方式生成您的收藏集:

var myCollection = new List<MyClass>();
int numberOfRows = int.Parse(TextBox.Text);
for (int i = 0; i < numberOfRows; i++){
    var element = new MyClass() {
                      Date = datepicker.Value.AddDays(i),
                      Amount = tb_amount / numberOfRows
                  }
    myCollection.Add(element);
}
datagridview.datasource = myCollection;