【问题标题】:Removing Selected Item from List Box从列表框中删除选定的项目
【发布时间】:2015-06-23 08:56:54
【问题描述】:

单击“删除引用”按钮时,我试图从ListBox 中删除一个条目。现在我遇到的问题是,当我单击按钮时,什么都没有发生。也有没有错误。

这是一个代码sn-p:

    private void btnDeleteQuote_Click(object sender, EventArgs e)
    {
        if (lbxQuoteNumber.SelectedItem == null)
            return;
        var quote = (ListBoxViewItem<Quote>)lbxQuoteNumber.SelectedItem;
        foreach (var qu in quote.Item.QuoteNumber) //<<-- I can even remove this line, but it still does not work
            lbxQuoteNumber.Items.Remove(quote);
    }

我是不是在做一些明显错误的事情,因为我无法理解发生了什么。我重新启动了我的应用程序,我“删除”的条目仍然显示,并且它们没有从我的数据库中删除。

任何帮助将不胜感激!谢谢!

编辑:这是我填写lbxQuoteNumber的编码

    private void lbxRepresentatives_SelectedIndexChanged(object sender, EventArgs e)
    {
        lbxQuoteNumber.Items.Clear();
        if (lbxRepresentatives.SelectedItem == null)
            return;

        var rep = (ListBoxViewItem<Represetative>)lbxRepresentatives.SelectedItem;
        foreach (var qu in rep.Item.Quotes)
            lbxQuoteNumber.Items.Add(new ListBoxViewItem<Quote>(qu, qu.QuoteNumber));
    }

我正在从我在后台运行的另一个 Web 服务引用我的所有类/表。这可能是问题所在,我应该在那里创建一个 delete 函数(代码优先),还是应该从我的ListBox 所在的程序中删除我的数据?

【问题讨论】:

  • 这个演员表可能不是你想要的 - (ListBoxViewItem&lt;Quote&gt;)lbxQuoteNumber.SelectedItem;。在这里,您正在投射列表框,而不是所选项目。小心括号。您的枚举变量也未使用。
  • 你在哪里从数据库操作中删除?
  • @Jeroen van Langen - 抱歉,我认为Items.Remove 也应该从数据库中删除该项目。有没有好办法把它从数据库中删除?我不太擅长c#对不起!
  • 您能否更新您的帖子,说明您如何从数据库中读取项目并填写ListBox
  • 是的,我会尽快更新:)

标签: c# winforms linq listbox entity-framework-6


【解决方案1】:

我认为您没有将更改提交到数据库:

lbxQuoteNumber.SaveChanges();  

移除物品后。

编辑:或者在正确的对象上调用它,如果“lbxQuoteNumber”不是您的数据库上下文对象:)

【讨论】:

  • 感谢您的回复!我收到错误消息:Error 1 'System.Windows.Forms.ListBox' 不包含“SaveChanges”的定义,并且没有扩展方法“SaveChanges”接受“System.Windows.Forms.ListBox”类型的第一个参数' 可以找到(您是否缺少 using 指令或程序集引用?)
  • 等等,你到底是从哪里删除数据库中的任何东西?似乎 'lbxQuoteNumber.Items.Remove(quote)' 只从列表框中删除项目。
  • 哦,抱歉,我以为Items.Remove 也会从我的数据库中删除该项目!
  • 我怎样才能从我的数据库中删除数据呢?抱歉,我对 C# 很陌生,所以我并不总是了解事情是如何工作的。 :)
【解决方案2】:

您还需要将其从数据库中删除,因为您没有提供任何代码来说明您如何处理数据库,这将向您展示我的工作。

dbContext.Quotes.Remove(quoteObject);
dbContaxt.SaveChanges();

【讨论】:

  • 谢谢!我很快就会试一试!
  • 不要创建新的上下文来执行此操作,您需要使用与将对象加载到表单中相同的上下文
  • 好的,当我回到我的主 PC 上时,我会这样做。一旦经过测试,我会及时通知您。感谢您到目前为止的输入! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多