DataGridView从多列绑定

时间:2011-12-25 21:18:19

标签: c#

我有一个混乱..混淆是我在我的Windows窗体上有一个datagridview。我想问一下,datagridview可以从具有相同列名的多个表绑定吗?

一个表包含数量,特定和比率列 其他表也具有与上面相同的列名称。 这两个表可以绑定到单个datagridview吗? 我的问题是这可能吗?

3 个答案:

答案 0 :(得分:1)

当您在两个具有公共列名的表上进行查询时,在连接中,select必须重命名一次(as),因此返回查询肯定具有不同名称的列:

Select tbl1.Quantity as quantity1 , tbl2.Quantity as quantity2,...

否则,如果你这样查询:

Select tbl1.Quantity , tbl2.Quantity,...

Sql优化器重命名其中一个列并使用like(可能)返回数据:[quantity],[expr1]

答案 1 :(得分:1)

如果您限制为SQL提供程序,RedHat的答案是可以的。更一般地说,您可以使用Linq(完全相同的 select 运算符!)来组合多个数据源(即表或迭代器)。然后只需将其分配给DataGridView。 编辑:这里有一个样本,HTH

using System;
using System.Linq;
using System.Windows.Forms;

namespace test_linq_join
{
    class MainClass
    {
        private class Cat
        {
            // Auto-implemented properties.
            public int Age { get; set; }
            public string Name { get; set; }
        }
        private class Dog
        {
            // Auto-implemented properties.
            public int Age { get; set; }
            public string Name { get; set; }
        }

        public static void Main (string[] args)
        {
            // these are simple datasources with overlapped fields (i.e. columns)
            Cat[] Cats = { new Cat { Age = 1, Name = "Leo" }, new Cat { Age = 3, Name = "Felix" } };
            Dog[] Dogs = { new Dog { Age = 10, Name = "Old"}, new Dog { Age = 1, Name = "New" } };

            var Pets =
                from C in Cats
                from D in Dogs
                    select new { AgeC = C.Age, AgeD = D.Age, NameC = C.Name, nameD = D.Name };

            var F = new Form();
            F.Controls.Add(new DataGridView { DataSource = Pets.ToList() });
            F.ShowDialog();
        }
    }
}

答案 2 :(得分:0)

在查询中使用AliasName来破坏列

  SELECT Table1.Quantity AS Quantity1,Table2.Quantity AS Quantity2
  FROM Table1 INNER JOIN Table2
  ON Table1.SomeID=Table2.OtherID

然后使用数量1和数量2来绑定不同的列。