Обновите DataGridView в usercontrol из другого пользовательского контроля после изменений

У меня есть DataGridView в моем usercontrol, который я хочу обновить, когда я вношу изменения. Например, когда я нажимаю кнопку сохранения в моем другом usercontrol, следует вызвать функцию обновления в usercontrol с помощью DataGridView. Я искал решения для этой проблемы, но ни одна из них не решила мою проблему (я попробовал ResetBindings, установив DataSource в null и снова установив DataSource и т.д.). Чтобы вызвать usercontrol из другого usercontrol, я использую экземпляры.

public partial class incidentTypeSearchControl : UserControl
{
 public static incidentTypeSearchControl Instance { get; set; }
 REINVENT_QualityDataSet reinventQualityDataset = new REINVENT_QualityDataSet();
 SqlCommand cmd = new SqlCommand();

 BindingSource source = new BindingSource();
 REINVENT_QualityDataSetTableAdapters.IncIncidentTypeTableAdapter incidentTypeAdapter =
 new REINVENT_QualityDataSetTableAdapters.IncIncidentTypeTableAdapter();

 public incidentTypeSearchControl()
 {
 InitializeComponent();
 Instance = this;
 this.dataGridView1.*************** += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_***************);
 }

 private void incidentTypeSearchControl_Load(object sender, EventArgs e)
 { 
 incidentTypeAdapter.Fill(reinventQualityDataset.IncIncidentType);

 source.DataSource = reinventQualityDataset.IncIncidentType;

 dataGridView1.AutoGenerateColumns = true; 
 //dataGridView1.DataSource = reinventQualityDataset.IncIncidentType;
 dataGridView1.DataSource = source;
 dataGridView1.Columns[0].HeaderText = "Id";
 dataGridView1.Columns[1].HeaderText = "Incidenttype";
 dataGridView1.Columns[2].HeaderText = "Categorie";
 dataGridView1.Columns[3].HeaderText = "Tellen in statistiek";
 dataGridView1.Columns[4].HeaderText = "Punten"; 
 dataGridView1.Columns[5].HeaderText = "Faalkosten";
 dataGridView1.Columns[6].HeaderText = "Kostendrager";

 for (int i = 0; i < 6; i++)
 {
 dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
 } 
 dataGridView1.Columns[6].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

 dataGridView1.BackgroundColor = System.Drawing.SystemColors.Control;

 }
 //added/ 
 public DataGridView myDataGrid
 {
 get { return dataGridView1; }
 set { dataGridView1 = value; }
 }

 public void updateDataGridView()
 {
 dataGridView1.DataSource = null;
 dataGridView1.DataSource = source;
 source.ResetBindings(true);
 }

В другом usercontrol я могу получить доступ к представлению datagridview следующим образом:

incidentTypeSearchControl.Instance.myDataGrid // access datagridview

Вызов метода updateGridView() устанавливает текст заголовка сетки обратно по умолчанию (это не намерение), а значения в datagridview не обновляются. Как сделать метод обновления/обновления моего datagridview и вызвать этот метод из моего другого usercontrol?

ОБНОВИТЬ:

Проблема решена путем заполнения набора данных снова

1 ответ

пытаться

dataGridView1.DataSource = typeof(IncIncidentTypeDataTable); // or whatever type is your source
dataGridView1.DataSource = source;

licensed under cc by-sa 3.0 with attribution.