winForms + DataGridView 绑定到 List<T>

     2023-02-22     178

关键词:

【中文标题】winForms + DataGridView 绑定到 List<T>【英文标题】:winForms + DataGridView binding to a List<T> 【发布时间】:2010-09-12 14:41:04 【问题描述】:

我正在尝试将 List&lt;T&gt; 绑定到 DataGridView 控件,但我没有任何运气来创建自定义绑定。

我试过了:

gvProgramCode.DataBindings.Add(new Binding("Opcode",code,"Opcode"));

它抛出一个异常,表示该属性名称没有找到任何东西。

相关列的名称是“操作码”。 List&lt;T&gt; 中的属性名称为 Opcode。

回答编辑:问题是我的类中没有可绑定字段作为属性,只有公共字段......显然它不会反映字段,只是属性。

【问题讨论】:

哈哈,这正是我在我的 cmets 中添加的内容,很高兴你的问题得到了解决。 +1 我也遇到了同样的问题。吸蛋的男人!!! 你真是天赐之物。现在,我已经连续六个小时一直在努力解决这个问题。尝试了我能想到的一切,以及我能想到的谷歌。没有运气。终于找到了你的帖子,当然,我很着急,把它们设为字段,而不是属性。 【参考方案1】:

您是否也将网格上的属性绑定到 Opcode?...如果您想直接绑定到 List,您只需 DataSource = list。数据绑定允许自定义绑定。您是否正在尝试做数据源以外的事情?

你得到一堆空行?自动生成的列有名称吗?您是否已验证数据在对象中(不仅仅是 string.empty)?

    class MyObject
    
        public string Something  get; set; 
        public string Text  get; set; 
        public string Other  get; set; 
    

    public Form1()
    
        InitializeComponent();

        List<MyObject> myList = new List<MyObject>();

        for (int i = 0; i < 200; i++)
        
            string num = i.ToString();
            myList.Add(new MyObject  Something = "Something " + num , Text = "Some Row " + num , Other = "Other " + num  );
        

        dataGridView1.DataSource = myList;
    

这应该可以正常工作...

【讨论】:

是的。如果我只是做 DataSource = list,我会得到一堆空列。 所以您只想将网格绑定到自定义对象列表中的操作码属性? 如果我问的是演员阵容,那就做... Grid.DataSource = MyList.Select(o => o.Opcode); 类中有三个字符串,Opcode就是其中之一。此类是 List 的类型,我希望每个字符串为一列,每个列表项为一行... 另一件事..对象中的字符串是属性,而不仅仅是公共字段,对吗?...如果您可以发布对象的定义,它也可能会有所帮助。【参考方案2】:

我无法真正告诉您要对包含的示例进行什么操作,但是如果您只想列出对象,则绑定到通用对象列表相当简单:

    private BindingSource _gridSource;

    private BindingSource GridSource
    
        get
        
            if (_gridSource == null)
                _gridSource = new BindingSource();
            return _gridSource;
        
    

    private void Form1_Load(object sender, EventArgs e)
    
        List<FluffyBunny> list = new List<FluffyBunny>();
        list.Add(new FluffyBunny  Color = "White", EarType = "Long", Name = "Stan" );
        list.Add(new FluffyBunny  Color = "Brown", EarType = "Medium", Name = "Mike" );
        list.Add(new FluffyBunny  Color = "Mottled", EarType = "Short", Name = "Torvald" );

        GridSource.DataSource = list;
        dataGridView1.Columns["EarType"].Visible = false; //Optionally hide a column
        dataGridView1.DataSource = GridSource;

    

如果您只想显示列表类型的特定属性,您应该能够使不需要的列不可见。

从技术上讲,您实际上并不需要创建 BindingSource,但如果我有它,我发现在进行更新或更改时会容易得多。

希望这会有所帮助。

【讨论】:

直接绑定到 List 时,我得到一堆空行,没有数据。 List 中的类只包含 3 个字符串。 谢谢贾里德!当我试图弄清楚如何在使用 List 时创建新行时,您对 BindingSource 的评论对我很有帮助。点击一下!【参考方案3】:

有同样的问题......我显然有一个带有公共字段的结构。网格中没有任何内容。提供公共吸气剂,工作。

【讨论】:

【参考方案4】:

我发现的另一个解决方案是使用 BindingList 集合。



private void Form1_Load(object sender, EventArgs e)

   BindingList people= new BindingList 
    new Person Name="John",Age=23,
    new Person Name="Lucy",Age=16
  ;

   dataGridView1.DataSource= people;

对我来说很好用,

【讨论】:

使用BindingList&lt;T&gt; 让我在尝试绑定DataGridViews 时省了力气!谢谢。

通过 TextBox(C#、WinForms)过滤空 DataGridView

】通过TextBox(C#、WinForms)过滤空DataGridView【英文标题】:FilteringEmptyDataGridViewthroughTextBox(C#,WinForms)【发布时间】:2020-10-2320:21:15【问题描述】:我有一个dataGridView,我从右上角的小箭头加载了数据。我的计划是使用textbox_TextChang... 查看详情

winforms:datagridview:高度(自动调整大小)取决于行数

】winforms:datagridview:高度(自动调整大小)取决于行数【英文标题】:winforms:datagridview:height(autosize)dependingonnumberofrows【发布时间】:2011-01-1913:59:26【问题描述】:在我的一种形式中,datagridview显示来自数据库的数据(当然,数... 查看详情

WinForms DataGridView 字体大小

】WinFormsDataGridView字体大小【英文标题】:WinFormsDataGridViewfontsize【发布时间】:2008-09-1515:39:46【问题描述】:如何更改DataGridView上的字体大小?【问题讨论】:请注意,如果您增加字体大小***.com/questions/3370236/…,您可能还想更... 查看详情

我们如何在winform的datagridview中进行分页

】我们如何在winform的datagridview中进行分页【英文标题】:Howcanwedopaginationindatagridviewinwinform【发布时间】:2011-02-1900:37:20【问题描述】:我想在窗口窗体的datagridview中每页显示10条记录,用户必须单击下一步按钮才能显示接下来... 查看详情

如何在 C# WinForms 中使用 LINQ 从 DataGridView 中选择多个字段

】如何在C#WinForms中使用LINQ从DataGridView中选择多个字段【英文标题】:HowtoSelectMultipleFieldsfromDataGridViewusingLINQinC#WinForms【发布时间】:2021-11-1515:04:13【问题描述】:技术细节:VisualStudio2017(社区版)LINQC#(WinForms)我正在尝试使用LIN... 查看详情

winform中的datagridview添加自动编号(代码片段)

...m项目,在工具栏里拖一个dataGriView到窗体中,默认名称为dataGridView1,把数据源添加到dataGridView1中,运行,看到dataGriView1有数据显示,但没有行编号,所以我们需要添加一列,用来显示行号,以便我们知道这是第几条记录。选中d... 查看详情

winForms + DataGridView 绑定到 List<T>

】winForms+DataGridView绑定到List<T>【英文标题】:winForms+DataGridViewbindingtoaList<T>【发布时间】:2010-09-1214:41:04【问题描述】:我正在尝试将List&lt;T&gt;绑定到DataGridView控件,但我没有任何运气来创建自定义绑定。我试过... 查看详情

如何更改winform DataGridview 标头的颜色?

】如何更改winformDataGridview标头的颜色?【英文标题】:HowtochangethecolorofwinformDataGridviewheader?【发布时间】:2010-11-1721:09:48【问题描述】:我尝试过没有成功。有可能吗?【问题讨论】:【参考方案1】:可以做到的。来自设计师... 查看详情

c#winform中datagridview导出excel

只需要传入datagridview的name即可。1//导出Excel()方法2publicvoidToExcel(DataGridViewdataGridView)3{4//实例化一个Excel.Application对象5Microsoft.Office.Interop.Excel.Applicationexcel=newMicrosoft.Office.Interop.Excel.Appli 查看详情

winform datagridview 列排序

】winformdatagridview列排序【英文标题】:winformdatagridviewcolumnsort【发布时间】:2021-11-1801:44:41【问题描述】:我正在尝试对标准Windows表单数据网格视图中的列进行排序。VisualStudio2015目标.net框架:4.5.2我已将AllowUsersToOrderColumns设置... 查看详情

gjm:c#winform开发系列-datagridview使用方法集锦

1.DataGridView实现课程表 testcontrol.rar  2.DataGridView二维表头及单元格合并 DataGridView单元格合并和二维表头.rar myMultiColHeaderDgv.rar   3.DataGridView单元格显示GIF图片 gifanimationind 查看详情

winform控件之combobox,datagridview(代码片段)

1.代码结构截图2.核心代码usingSystem;usingSystem.Data;usingSystem.Drawing;usingSystem.Windows.Forms;namespaceWinFormComboBoxDemos///<summary>///WinForm程序:ComboBox和DataGridView使用方法///LDH@2018-3-6///</su 查看详情

一个winform下datagridview控件外观的自定义类

一、关于起因最近非常频繁的使用DataGridView控件,VS提供的Winform下DataGridView的默认样式非常难看。如果做美化处理的话,需要调整的地方非常多,且该控件的很多设置属性非常的晦涩,不是很人性化。每次进行设置都煞费脑筋,... 查看详情

如何在winforms的datagridview中将字符串排序为数字

】如何在winforms的datagridview中将字符串排序为数字【英文标题】:howtosortstringasnumberindatagridviewinwinforms【发布时间】:2011-02-1002:33:45【问题描述】:我在datagridview中有带数字的字符串列。它没有绑定,我想按我使用的数字对它进... 查看详情

winform中datagridview控件添加行标题

有很多种方法。 1、可以在DataGridView控件中的RowStateChanged事件改变行标题单元格的值(Row.HeaderCell.Value)1///<summary>2///行状态更改时发生3///</summary>4///<paramname="sender"></param>5///<paramname="e"& 查看详情

winform导出datagridview到excel

如果电脑上没有Microsoft.Office.Interop.Excel.dll去找DLL下载站下载即可 需要先导入这个dll的引用 呈上代码:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSyst 查看详情

在 WPF WindowsFormsHost 中滚动 WinForms DataGridView

】在WPFWindowsFormsHost中滚动WinFormsDataGridView【英文标题】:ScrollWinFormsDataGridViewinaWPFWindowsFormsHost【发布时间】:2012-02-2812:54:25【问题描述】:我有一个Scrollviewer,它包含一个带有WindowsFormsHost的框架。WindowsFormsHost包含一个DataGridView... 查看详情

C# WinForms - DataGridView/SQL Compact - 主键列中的负整数

】C#WinForms-DataGridView/SQLCompact-主键列中的负整数【英文标题】:C#WinForms-DataGridView/SQLCompact-Negativeintegerinprimarykeycolumn【发布时间】:2010-09-0712:00:09【问题描述】:我刚刚开始使用WinForms,并且通过一个可爱的教程,我发现了将数据... 查看详情