从Foreach循环通过DataTable填充DatagridView

本文关键字:DataTable 填充 DatagridView Foreach 循环 | 更新日期: 2023-09-27 18:08:25

我曾多次使用数据库填充数据网格。然而,在这种情况下,我似乎不能得到想要的结果。我试图只显示当天过生日的人。我已经有日期,和生日,但我似乎不能得到行添加到datagridview。

这是我所得到的。但是他"生日奶奶"。数据源" i can't figure out.

我已经搜索了2天了。

我是新手,如果你能帮助我,我将非常感激。

    private void Tasks_VisibleChanged(object sender, EventArgs e)
    {            
        Clients = Controller.DBQueries.GetPolicyList();
        if(Clients != null)
        {
            foreach(DataRow row in Clients.Rows)
            {
                string ClientID = Clients.Rows[0]["ClientID"].ToString();
                DateTime Birthdate = Controller.GetBirthdate(ClientID);
                DateTime now = DateTime.Now;            
                if (Birthdate.Day == now.Day && Birthdate.Month == now.Month)
                {
                }                    
            }
        }
    }       

从Foreach循环通过DataTable填充DatagridView

您的代码中似乎遗漏了一些东西,但是如果没有所有的信息,我建议您尝试一下,如果您确信您的数据表已经填充。

将一个bindingsource对象从工具箱中拖到窗体中,将其添加到Windows窗体中。

设置它将被称为bindingsource1。将它的DataSource设置为数据表,如下所示:

 BindingSource1.DataSource = "your data table name here";

然后将DataGridView的数据源设置为bindingsource1。

 "Your DataGridView".DataSource = BindingSource1;

或者如果你不需要BindingSource提供的一些额外功能,比如"过滤器"等…你可以将数据表直接绑定到DataGridView,如下所示:

DataGridView.DataSource = "your data table name here";

如果Clients是一个DataTable,并且你知道你想要应用什么过滤,那么为什么不在DataTable上使用Filter作为:

DataView dv = new DataView(Clients);
dv.RowFilter = "month(of your Birthday Col)="+now.Month+" and day(of your BirthDay Col)="+now.Day;
yourGridView.DataSource = dv.ToTable();
yourGridView.DataBind();

代替所有Foreach循环和所有?