2013-02-20 3 views
1

У меня есть ниже код в Form2контроль Обновление в детской форме из родительской формы

public void authorisedList() 
    { 
     using (myContext v = new myContext()) 
     { 
      DateTime date = DateTime.Today.AddMonths(-12); 

      var myList = (from l in v.AuthorisedList 
              where l.FromDate >= date 
              select new 
              { 
               l.ID, 
               l.EmpName, 
               l.StartDate, 
               l.EndDate, 
               l.Days, 
               l.Approved, 
               l.Confirmed, 
              }).ToList(); 

      reportViewer1.LocalReport.DataSources.Clear(); 
      ReportDataSource datasource = new ReportDataSource("MyReportsDatasource", myList); 
      reportViewer1.LocalReport.DataSources.Add(datasource); 

      string exeFolder = Path.GetDirectoryName(Application.ExecutablePath); 
      string reportPath = Path.Combine(exeFolder, @"rdlcReports\Authorised List.rdlc"); 

      reportViewer1.LocalReport.ReportPath = reportPath; 
      reportViewer1.RefreshReport(); 
     } 
    } 

Тогда в Form1, который является родителем Form2, у меня есть ниже код в радиокнопки

private void radioButton1_CheckedChanged(object sender, EventArgs e) 
    { 
     Form2 au = new Form2(this); 
     au.authorisedList(); 
    } 

Проблема заключается в том что когда я проверяю элемент управления RadioButton (radioButton1) в Form1, authorizeList() в Form2, похоже, выполняется, но отчет reportViewer не обновляется/не изменяется.

Меня удивляет, почему.

ответ

0

Если ваш Form2 уже открыт, тогда вы должны получить объект открытой формы, а затем вызвать его метод authorisedList(). Вы можете использовать свойство Application.OpenForms.

private void radioButton1_CheckedChanged(object sender, EventArgs e) 
{ 
    Form2 au = Application.OpenForms["Form2"] as Form2; 
    if(au != null) 
      au.authorisedList(); 
} 
Смежные вопросы