【问题标题】:.NET / C# Binding IList<string> to a DataGridView.NET / C# 将 IList<string> 绑定到 DataGridView
【发布时间】:2010-11-09 09:55:47
【问题描述】:

我有一个从函数(作为变量 lst)返回的 IList&lt;string&gt;,我设置然后我

this.dataGridView1.DataSource = lst;

数据网格添加一列标记为长度,然后列出每个字符串的长度。 如何让它只列出字符串?

【问题讨论】:

  • 您的 IList 是否仅包含字符串?还是包含其他类型,&lt;T&gt;
  • 呃...他说这是一个 IList...

标签: c# .net data-binding datagridview ilist


【解决方案1】:

您确实需要一个具有字符串属性的对象列表。使用 .NET 3.5 你可以作弊:

.DataSource = list.Select(x=>new {Value = x}).ToList();

否则创建一个虚拟类并手动复制数据...

【讨论】:

  • 正是我想要的,匿名类型非常适合这种事情。
【解决方案2】:

这是因为 DataGridViews 显示对象的属性。在这种情况下,列表只有一个属性“长度”,因此它只能显示“长度”(无论数据类型如何)。 您需要创建一个包装类来实现您想要的(具有“Text”属性的“MyString”类,然后在您的网格中显示一个列表)。

希望对你有帮助

添加代码示例

 class MyString
    {
        private string _text;
        public string Text
        { get 
             { 
              return _text; 
             }
            set 
            {
                _text = value; 
            }
        }

    }

'在执行表单中

 private List<MyString> foo()
        {
            List<MyString> lst = new List<MyString>();
            MyString one = new MyString();
            MyString two = new MyString();
            one.Text = "Hello";
            two.Text = "Goodbye";
            lst.Add(one);
            lst.Add(two);
            return lst;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            dataGridView1.DataSource = foo();

        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 2013-04-15
    相关资源
    最近更新 更多