通过DataTable从Foreach循环填充DatagridView

时间:2015-08-17 15:37:03

标签: c# datagridview

我曾多次使用数据库来填充数据网格。 但是,在这种情况下,我似乎无法获得所需的结果。 我试图只显示那天过生日的人。 我已经有了日期和生日,但我似乎无法获得添加到datagridview的行。

这是我有多远。但他" BirthdayGrdVw.DataSource"我似乎无法弄清楚。

我一直在谷歌上搜索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)
                {

                }                    
            }
        }
    }       

2 个答案:

答案 0 :(得分:0)

您的代码似乎遗漏了一些内容,但如果您确定已填充数据表,则不建议您使用此处的所有信息。

通过将bindingsource对象从工具箱拖到窗体上,将其添加到Windows窗体中。

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

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

然后将DataGridView的DataSource设置为bindingsource1。

 "Your DataGridView".DataSource = BindingSource1;

或者,如果您不需要BindingSource提供的一些额外功能,例如" Filter" etc ...您可以将数据表直接绑定到DataGridView,如:

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

答案 1 :(得分:0)

如果客户端是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循环和所有?