【问题标题】:How to set the DataSource of a DataGridView inside a ToolStripControlHost? (C# window forms)如何在 ToolStripControlHost 中设置 DataGridView 的 DataSource? (C# 窗口窗体)
【发布时间】:2010-11-21 09:28:22
【问题描述】:

我在 ContextMenu 控件中有一个 DataGridView,请看下面的代码 sn-p:

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
        }

这里发生的情况是,当表单打开时,它会显示 contextMenu 并在其上显示 DataGridView 和 dataSet1 的值。但是当我单击按钮更改网格的数据源时,它没有显示 dataSet2 的记录。 请帮我解决这个问题...谢谢...

【问题讨论】:

  • 代码看起来没问题,你可以先尝试设置dataGridView1.DataSource = null。也许清除列。

标签: c# winforms toolstripcontrolhost


【解决方案1】:

您可以尝试将 DGV 的 DataSource 设置为 BindingSource 对象,然后改为修改 BindingSource 的 DataSource。您可以通过调用 CurrencyManager.Refresh() 来强制 BindingSource 更新(如果它没有自动更新)。

【讨论】:

  • 无论你在哪里定义 DataGridView,也要坚持 BindingSource bs = new BindingSource(); dataGridView1.DataSource = bs;现在,在 SetDataSource 中,将第一行更改为 bs.DataSource = ds;您可能还想在 SetDataSource 中添加 bs.CurrencyManager.Refresh() 行。
  • 我尝试在我的表单(dataGridView2)中添加另一个DataGridViewControl,然后将dataGridView2的DataSource设置为与dataGridView1相同。唯一的区别是我没有将dataGridView2添加到ToolStripControlHost,它只是在表单中显示。
  • 最初,这两个DataGridViews显示在一个表单中。当表单加载时,dataGridView1 被添加到 contextMenu 中,导致它在表单中消失并留下另一个 DataGridView (dataGridView2)。当我点击 button1 时,dataGridView2 会从其新的 DataSource (dataSet2) 更改其内容库,而 dataGridView1 仍显示 dataSet1 的值。
  • 我注意到当dataGridView1被添加到ToolStripHost,并使其成为controltextMenu中的Item时,DataGridView控件的DataSource属性不再改变。与保留在我没有添加到 controltextMenu 的表单中的 dataGridView2 不同。
【解决方案2】:

已经回答here.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 2010-09-11
    • 2015-10-12
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多