【问题标题】:C# dataset clear methodC#数据集清除方法
【发布时间】:2011-03-28 14:58:52
【问题描述】:

我是 C# 新手。我想创建一个带有组合框和 dataGridView 的 windows 窗体。我根据从组合框中选择的值填充 dataGridView。到现在为止还挺好。但是当我改变组合框的值,并尝试像这样重新加载 dataGridView 的内容时:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (comboBox1.SelectedValue != null) 
    { 
        if (ds.Tables.Contains("Leagues"))
        { 
            ds.Tables["Leagues"].Clear(); // <-- error happens here 
        }
        leagues_adapter.SelectCommand.Parameters[0].Value = comboBox1.SelectedValue;
        main.InsertCommand.Parameters[0].Value = comboBox1.SelectedValue; 
        leagues_adapter.Fill(ds, "Leagues"); 
    } 
}

myDataSet.Tables["myTable"].Clear() 被调用时,我会在 DataGridView 默认错误对话框中看到以下内容:

System.IndexOutOfRangeException:索引 0 没有值 在 System.Windows.Forms.ConcurrencyManager.get_Item(Int32 索引)在 System.Windows.Forms.DataGridView.DataGridViewDataConnection.GetError(Int32 行索引)。要替换此默认对话框,请处理 DataError 事件。

我还有一个确定按钮。

仅当我想将组合框的内容从某个值更改为某个其他值时才会发生这种情况。 但是,如果我多次点击 OK 按钮,我会看到每次点击,一行和一列中的一个元素都会被一个一个删除,当我用 OK 按钮消耗所有元素时,我终于得到了我想要的想要:其中包含新数据的 dataGridView。请帮助我,任何答案表示赞赏。提前致谢。

【问题讨论】:

  • 这是我的问题的代码:
  • 抱歉格式化,我也是stackoverflow的新手
  • 如何填充 DataGridView?
  • 欢迎来到 Stackoverflow!我们在此处编辑问题以添加其他信息(例如代码)。您可以通过点击左侧的编辑链接来编辑您的问题,就在您的问题下方。
  • 我填充我的数据集(这是一个强类型数据集),然后我将 dataGtidView.DataSet 填充到数据集中的这些表之一。然后我尝试根据组合框的值重新加载dataGridView,代码就在那里。

标签: c#


【解决方案1】:

清除绑定,重新加载数据后重新设置:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    dataGridView.DataSource = null;

    // Reload data with the code in your question.

    dataGridView.DataSource = // same code as you are using right 
                              // now for setting the binding
}

【讨论】:

  • 非常感谢,它成功了。我现在明白为什么它不能以以前的形式工作。非常感谢。
【解决方案2】:

如果dataTable用作dataGridView的数据源,则不能清除dataTable。

【讨论】:

  • 能不能详细解释一下?
猜你喜欢
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
  • 2020-04-17
  • 2015-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
相关资源
最近更新 更多