2015-08-17 8 views
0

Я использовал базу данных, чтобы многократно заполнять Data-сетки. Однако в этом случае я не могу получить желаемый результат. Я пытаюсь показать только людей, у которых день рождения в день. У меня уже есть даты и день рождения, но я не могу заставить их добавить строки в datagridview.Заполнение DatagridView из цикла Foreach через DataTable

вот как далеко у меня есть. Но он «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) 
       { 

       }      
      } 
     } 
    }  
+0

Спасибо, Стив. для редактирования. – Gee

+0

Нет кода, который добавляет DataGridView в то, что вы опубликовали. – user469104

+0

'Клиенты = Controller.DBQueries.GetPolicyList();' Я думаю, что вам что-то не хватает, что такое 'Клиенты'? –

ответ

0

Там, кажется, вещи, оставленные из вас код, но без всей информации здесь является то, что я предлагаю вам попробовать, если вы уверены, что ваш DataTable был заполнен.

Добавьте объект привязки к вашей форме Windows, перетащив его из панели инструментов в форму.

Установить его будет называться bindingsource1. Установите это DataSource в DataTable, как это:

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

А затем установите DataSource в DataGridView на bindingsource1.

"Your DataGridView".DataSource = BindingSource1; 

Или, если вам не нужны некоторые дополнительные функциональные возможности, что BindingSource обеспечивает как «фильтр» и т.д ... Вы можете связать DataTable непосредственно к DataGridView, как:

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

Большое вам спасибо за это. – Gee

+0

Причина, по которой я не учитывал источник данных gridview, заключается в том, что я не могу заставить его заполнить. вот пример одной из попыток. BirthdayGrdVw.DataSource = Clients.Rows; – Gee

+0

Какого типа объект Клиенты? У этого есть свойство Rows, разве это не Datatable? – thewisegod

0

Если Клиенты это DataTable, и вы знаете, что фильтрация вы хотите применить, то почему бы не использовать фильтр на DataTable, как:

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 и все?

+0

Спасибо STACKS !! – Gee

Смежные вопросы