WinForm 数据绑定控件结果返回类名不是实际数据

     2023-04-11     176

关键词:

【中文标题】WinForm 数据绑定控件结果返回类名不是实际数据【英文标题】:WinForm Databound Control Results Return Class Name Not Actual Data 【发布时间】:2020-08-10 09:29:28 【问题描述】:

我很难找到解决问题的方法。我搜索了互联网,多次重建了我的课程,并检查了调试器中的每一行。

我有三个 ListBox 控件,我将 BindingList 数据绑定到这些控件。在其中两个 ListBox 中,数据是预期的;数据库中的名称。第三个 ListBox 不显示名称,而是显示项目的名称空间。在我的每个类中,我都实现了 IBindingList 接口。我已将列表绑定到控件的 DataSource 并为 DisplayMember 提供了适当的名称。

在调试器中,绑定到 DataSource 后,我可以在 lbRole ListBox 中看到来自数据库的名称,但是当表单显示时,它们不会出现,只是命名空间。

//
// Get all control names.
//
lbUser.DataSource = SharepointTestBusinessLayer.User.ListAll();
lbUser.DisplayMember = "LoginID";

lbControl.DataSource = SharepointTestBusinessLayer.Control.ListAll();
lbControl.DisplayMember = "ControlName";

lbRole.DataSource = SharepointTestBusinessLayer.Role.ListAll();
lbRole.DisplayMember = "RoleName";

在使用调试器遍历我的类时,在 RoleItemCollection 类中,GetEnumerator() 永远不会被命中。

BindingList<RoleItem> m_CurrentRoleItemCollection;

public BindingList<RoleItem> CurrentRoleItemCollection  get => m_CurrentRoleItemCollection; set => m_CurrentRoleItemCollection = value; 

public object this[int index]  get => ((IBindingList)CurrentRoleItemCollection)[index]; set => ((IBindingList)CurrentRoleItemCollection)[index] = value; 

public IEnumerator GetEnumerator()

    return ((IBindingList)CurrentRoleItemCollection).GetEnumerator();

我不知道为什么 GetEnumerator() 在 RoleItemCollection 类中从来不是他的,因为它在 ControlItemCollection 和 UserItemCollection 类中被击中。

您对这个问题有什么想法,您可能对此有所了解。我想不出还有什么可以尝试的。

【问题讨论】:

RoleItemCollection 类是否实现了IEnumerable 不,RoleItemCollection 没有实现 IEnumerable。 UserItemCollection 或 ControlItemCollection 也没有,我得到了这些类的预期结果。 可以分享ListAll()的源码吗?好像不是IBindingList的方法。 在我的业务层中,我有一个名为 Role 的静态类,它是从表单中调用的。这是一个返回 RoleItemCollection 的静态方法 ListAll(),在这个方法中,我调用了一个名为 Role 的 DataLayer 静态类,它有一个名为 ListAll() 的静态方法。此方法连接 Sql Server,调用存储过程,并使用 DataReader 获取数据。我将数据放入 RoleItem 类,然后将其添加到 RoleItemCollection 类。 RoleItemCollection 类实现了 BindingList. 我已经重现了这个问题。会不会是 RoleItem 类没有名称为RoleName 的属性?因为,根据您的代码,我实现了 RoleItem 类并将 RoleName 属性放入其中并且它工作(在列表框中显示“Admin”等)。然后我把属性名改成 RoleName2 并且类的类型名显示在列表中。请检查您是否真的在类RoleItem 中有一个名为RoleName 的属性。 【参考方案1】:

我想我发现了部分原因。当我将属性名称从 RoleName 更改为 NameOfRole 时,我得到了实际数据。我不知道为什么会这样,但 RoleName 作为该属性的实际名称与我尚未找到的内容相冲突。谢谢大家花时间回答我的问题。

【讨论】:

winform开发中如何将数据库字段绑定到combobox控件

...多问题,希望通过博客把一些印象深刻的问题记录下来。Winform开发中如何将数据库字段绑定到ComboBox控件1.问题引入在开发中用到了ComboBox控件,也就是实现下拉选择功能的控件。但是选项的数据并不是固定的,而是要根据数据... 查看详情

winform控件combobox数据绑定

ComboBox下拉菜单控件,在数据库内的ComboBox应用的表进行修改时,如果是用的普通方法,显示数据一个方法,添加数据一个方法这样会导致程序后期维护难度增加,在这里使用数据绑定来让ComboBox数据实现根据数据库对应表数据显示,降低... 查看详情

winform中combobox控件之数据绑定

http://www.cnblogs.com/peterzb/archive/2009/05/30/1491923.html          下面介绍三种对comboBox绑定的方式,分别是泛型中IList和Dictionary,还有数据集DataTable 一、IList & 查看详情

winform中加入wpf控件并绑定数据源实现跨线程自动更新

 1.WINFORM中添加两个ElementHost,一个放WPF的Button,一个放WPF的TextBox。其中TextBox与数据源绑定,实现跨线程也可以自动更新,而不会出现WINFORM的TextBox控件与数据源绑定后,存在子线程中更新数据源报错(跨线程更新控件)的情... 查看详情

winform控件大全,要详细的.

WinForm控件大全,要详细的.基础-常用控件C#WinForm开发系列-CheckBox/Button/Label/ProgressBarWinForm下CheckedListBox的数据绑定Winform下无闪烁走马灯效果实现c#,winform,progressbar+labe,联动显示进度C#WinForm开发系列–TextBox只能输入数字的TextBox---补... 查看详情

winform自定义分页控件及datagridview数据绑定

  分页效果如上图所示,用到的控件均为基本控件,其方法如下右击项目-添加-新建项选择用户控件然后在用户控件中拖入所需要的Label,Button,Text用户控件全部代码: usingSystem;usingSystem.Collections.Generic;usingSystem.Componen... 查看详情

winform控件之datagridview数据控件显示问题

    最近在做同类的信息记录管理系统时遇到了DataGridView数据控件的显示问题,可能是2015年的上半年没有深入学习C#开发的原因,这几天重新搬出来开发,首先遇到的问题就是动态绑定数据显示的问题,琢磨了很久... 查看详情

winform控件之datagridview数据控件显示问题

    近期在做同类的信息记录管理系统时遇到了DataGridView数据控件的显示问题。可能是2015年的上半年没有深入学习C#开发的原因。这几天又一次搬出来开发,首先遇到的问题就是动态绑定数据显示的问题。琢磨了非... 查看详情

winform中如何在一个页面使另一个页面的datagridview重新绑定数据源啊。求代码。。本人不是很会,给高分

参考技术A要想在这个窗体控制另一个窗体的控件,把另一个窗体控件的modifiers属性设为public就可以的!不懂可以继续追问!望采纳! 查看详情

winform双向数据绑定(代码片段)

目的:控件的属性值与对象的属性值双向绑定使窗口控件的属性值与对象的属性值保持一致。对窗口控件属性值更改后立即更新对象的属性值,对对象的属性值更改后立即更新窗口控件的属性值。定义控件属性要绑定对象的类:... 查看详情

页面导航后 WPF MVVM 数据绑定中断

】页面导航后WPFMVVM数据绑定中断【英文标题】:WPFMVVMdatabindingbrokenafterpagenavigation【发布时间】:2011-04-0702:51:31【问题描述】:我在WPF导航样式应用程序中有一个页面,用于显示搜索结果。该页面包含几个数据绑定控件。页面本... 查看详情

C# winform 检查控件是不是物理可见

】C#winform检查控件是不是物理可见【英文标题】:C#winformcheckifcontrolisphysicalyvisibleC#winform检查控件是否物理可见【发布时间】:2011-06-1211:41:16【问题描述】:是否可以确定是否可以看到控件的至少一个像素(通过属性或可能使用... 查看详情

c#winform类似于如下图显示用啥控件绑定并实现分页

DataGridView控件是表格,而你发的是web的模版List.所以在Winform中可使用DataRepeater.可以在模版中创建你想要的布局.直接绑定应该做不了.需要手动添加.更多内容请看msdn的例程:http://msdn.microsoft.com/zh-cn/subscriptions/downloads/cc488278.aspx关于... 查看详情

请教c#winform中combox控件?

如何在combox控件绑定数据后添加一个空选项,而且combox的默认选项是空,在选择其他选项后还可以选择空选项,谢谢!另:comboBox1.SelectedIndex=-1;这个是可以,但是选择完后就不能再选空了如果用comboBox1.DataSource这种方式绑定,只... 查看详情

winform版本的devexpress控件gridcontrol如何从数据库中排序

在分页的情况下。点击列头的时候,默认只会排序当前页。我想在点击列头排序的时候,重新绑定数据。DevExpress控件没用过请指教。参考技术A按F4,有个按字段排序的属性 参考技术B你点击列头排序默认就是按照那个列头的属性... 查看详情

winform中如何判断控件的内容已经修改?

winform中,比如一个添加界面,或者修改界面,里面有一些TextBox还有一些ComboBox等一系列控件。要实现的效果就是:当这些控件中的数据修改后,比如填写了一些数据,还没有保存时用户要关闭此窗体,就提示用户是否保存。如... 查看详情

如何将绑定连接到(Winform)ComboBox 控件以从绑定源获取/设置控件中的选择?

】如何将绑定连接到(Winform)ComboBox控件以从绑定源获取/设置控件中的选择?【英文标题】:HowdoIconnectabindingtoa(Winform)ComboBoxcontroltoget/settheselectioninthecontrolfromthebindingsource?【发布时间】:2021-09-2006:13:34【问题描述】:我已经深... 查看详情

c#winform关于listview控件绑定datatable

今天用到ListView控件,这里总结一下ListView控件绑定DataTable的方法下面需要特别注意的是,绑定的过程中实现绑定控件的column的属性,再进行item的绑定。与DataGridView不同的是,不能直接使用DataSourse绑定,再者,绑定第一个Items的... 查看详情