【问题标题】:LINQ Combobox Databinding behave weirdLINQ 组合框数据绑定行为怪异
【发布时间】:2012-02-25 12:53:59
【问题描述】:

我有一个 WinForm,我有一个显示网站列表的 DataGridView。在该网格下方,我有一个文本框和一个组合框,使用 DataBinding 文本框显示当前值“代码”网格列,组合框显示省。组合框填充了省份列表 奇怪的是: 当我将组合框选择的省更改为另一个时,当焦点离开组合框时,组合框的原始值返回。我找不到组合框保留更改值的方法。

我做错了什么?

这是我的工作台项目的代码;

    private void Form1_Load(object sender, EventArgs e)
    {
        context = new GMR_DEVEntities();
        lSite = from t in context.tblSites where t.Actif == true select t;
        this.dataGridView1.DataSource = lSite;

        this.dataGridView1.AutoGenerateColumns = true;
        Guid ProvinceId = Guid.Parse("00000000-0001-0000-0008-000000000001");

        IQueryable<tblDomVal> provinces = from prov in context.tblDomVals where prov.pTypeDomValID == ProvinceId select prov;

        comboBox1.DataSource = provinces;
        comboBox1.ValueMember = "ID";
        comboBox1.DisplayMember = "DescrFr";

        textBox1.DataBindings.Add(new Binding("Text", lSite, "Code"));

        comboBox1.DataBindings.Add(new Binding("SelectedValue", lSite, "pProvinceID", false, DataSourceUpdateMode.OnPropertyChanged));


    }

欢迎任何帮助:)

雨果

【问题讨论】:

  • 您是否注意到 lSite 查询的执行频率比预期的要高?

标签: linq data-binding combobox


【解决方案1】:

尝试为你的组合创建一个新的绑定上下文

 BindingContext oBC = new BindingContext();
    comboBox1.BindingContext = oBC;
    comboBox1.DataBindings.Add(new Binding("SelectedValue", lSite, "pProvinceID", false, DataSourceUpdateMode.OnPropertyChanged));

【讨论】:

  • 好吧,我试过了,但行为没有改变,焦点时仍然返回原始值,离开控件。 :(
  • 您有什么与您的组合框相关的事件吗?
  • 不,您在上面看到的代码是表单中唯一的代码。而且组合框不是自定义的。
  • 我注意到了一点,在 Validating 事件中,“Combobox.Selectedvalue”是商品,我的意思是它对应于更改的那个,但是在 Validated 事件,“Combobox.Selectedvalue”是原始的。
  • validated 事件总是在验证事件后触发,所以如果验证将您的组合设置为不需要的值,那么这就是您的问题的原因
【解决方案2】:

在寻找解决方案时,我发现问题与数据类型有关(我所有的表 ID 都是 GUID),我将绑定更改为使用 varchar 字段而不是 guid 进行绑定,并且事情进展顺利。所以问题与GUID有关。但我会改变我的方法,并使用手动绑定

【讨论】:

    猜你喜欢
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 2012-01-24
    • 2011-07-06
    相关资源
    最近更新 更多