我有一个混乱..混淆是我在我的Windows窗体上有一个datagridview。我想问一下,datagridview可以从具有相同列名的多个表绑定吗?
一个表包含数量,特定和比率列 其他表也具有与上面相同的列名称。 这两个表可以绑定到单个datagridview吗? 我的问题是这可能吗?
答案 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来绑定不同的列。