2010-08-13 8 views
0

У меня есть DataGridView внутри управления ContextMenu, пожалуйста, см фрагмент кода ниже:Как установить DataSource DataGridView внутри ToolStripControlHost? (C# окно формы)

private void Form1_Load(object sender, EventArgs e) 
     { 
      SetDataSource(dataSet1);// A populated DataSet 
     } 

protected void SetDataSource(DataSet ds) 
     { 
      dataGridView1.DataSource = ds; 
      ToolStripControlHost tsHost = new ToolStripControlHost(dataGridView1); 
      contextMenuStrip1.Items.Clear(); 
      contextMenuStrip1.Items.Add(tsHost); 
      contextMenuStrip1.Show(textBox1, 0, 27); 
     } 

private void button1_Click(object sender, EventArgs e) 
     { 
      SetDataSource(dataSet2);// Another populated DataSet 
     } 

Что здесь происходит, когда в форме открывает, он показывает Контекстное и отображать DataGridView на ней со значением dataSet1. Но когда я нажимаю кнопку, чтобы изменить DataSource Grid, она не отображает записи dataSet2. Пожалуйста, помогите мне, как исправить это ... спасибо ...

+0

код выглядит нормально, вы можете попробовать установить 'dataGridView1.DataSource = null' первым. И, возможно, очистить столбцы. –

+0

ok sir, я попробую; – yonan2236

+0

Не работает сэр. – yonan2236

ответ

0

Вы можете попробовать установить источник данных DGV на объект BindingSource и затем вместо этого изменить DataSource BindingSource. Вы можете заставить BindingSource обновляться, если он не выполняется автоматически, вызывая его CurrencyManager.Refresh().

+0

ok sir ... но как должен выглядеть код? – yonan2236

+0

Где бы вы ни определяли свой DataGridView, также нажмите на BindingSource bs = new BindingSource(); dataGridView1.DataSource = bs; Теперь, в SetDataSource, измените первую строку на bs.DataSource = ds; Вы также можете добавить строку bs.CurrencyManager.Refresh() в SetDataSource. – Jonathan

+0

ok .............. Я попробую еще раз:) – yonan2236