【问题标题】:Relationship between ComboBox & ListBoxComboBox和ListBox的关系
【发布时间】:2017-06-01 18:10:44
【问题描述】:

我有一个如下的数据集设置:

可以看出,两个表之间存在关系。

在我的表单页面中,我有以下布局:

组合框只需选择“平台”,我想要得到的是列表框只显示属于关系的记录,由 plataforma_id 过滤。

在“SetupUrlConditions”表的 TableAdaptor 中,我将其设置如下:

当我运行应用程序时,ListBox 始终显示所有记录,而不是按关系过滤。改变ComboBox选中项,结果总是一样的。

那么,我的代码中是否缺少一些东西来完成这个?

谢谢。

编辑:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Backoffice
{
    public partial class SetupRules : Form
    {
        public SetupRules()
        {
            InitializeComponent();
        }

        private void plataformasBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.plataformasBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.plataformasDataSet);

        }

        private void SetupRules_Load(object sender, EventArgs e)
        {

            this.plataformasTableAdapter.Fill(this.plataformasDataSet.plataformas);


            this.setupUrlConditionsTableAdapter.Fill(this.plataformasDataSet.SetupUrlConditions);

        }

}

}

【问题讨论】:

  • 仅仅因为数据库配置了关系并不意味着它会在前端以实物形式响应。您需要为组合框引发 changed 事件以强制更新列表框中的结果数据集内容。然后,该更改将重新填充您的前端。由于下面的答案要求您提供更多表单代码,因此可以更好地帮助我们帮助您。
  • 现在填充两个控件。当组合框没有选择时,不要填充列表框。 SelectedIndexChangeSelectedValueChanged 事件可用于根据所选值填充列表框。
  • 嗨@mvermef,我刚刚做了你所说的。我已经移动了这条线: this.setupUrlConditionsTableAdapter.Fill(this.plataformasDataSet.SetupUrlConditions);在组合框中更改事件并始终返回所有记录。
  • 不要将 TableAdapters 留在他们参考我的答案的地方。请注意,这就像 2001 年的技术......我不得不有点挠头,因为自从 WPF 出现以来我还没有真正使用过 Forms。

标签: c# visual-studio combobox listbox


【解决方案1】:
    private void PlatformasCBO_SelectedValueChanged(object sender, EventArgs e)
    {
        if (PlatformasCBO.SelectedValue != null)
        {
            SiteUrlLstBox.DataSource = this.platformasDataSet.SetupUrlConditions.Where(  p => p.platforma_id == (int)PlatformasCBO.SelectedValue).ToList();
        }
    }

好吧,你让我挖掘那个,因为我已经很久没有这样做了...... 组合框 = 平台。要设置的属性是 DisplayMember = Plaformas, ValueMember = Id

ListBox just displaymember = condicion?... 由你决定。

请记住,此设置始终会选择某些内容,需要将其修改为最初没有选择任何内容,但超出了问题的范围

【讨论】:

    猜你喜欢
    • 2021-09-20
    • 2014-08-14
    • 2013-01-02
    • 1970-01-01
    • 2013-02-24
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    相关资源
    最近更新 更多