linq绑定到GridView显示不了全部数据
用的默认的数据库是NorthWind aspx页面就放了个GridView
<asp:GridView ID="GridView1" runat="server" >
</asp:GridView>
绑定的代码
protected void Page_Load(object sender, EventArgs e)
{
NorthwindDataContext db = new NorthwindDataContext();
var q =
from e1 in db.Employees
join o in db.Orders on e1.EmployeeID equals o.EmployeeID into ords
from o in ords.DefaultIfEmpty()
select new
{
e1.FirstName,
e1.LastName,
Order = o
};
GridView1.DataSource = q;
GridView1.DataBind();
}
最后只会显示FirstName 和 LastName这两列 ,这两列的数据也都是正确的,但是我断点调试了一下,把生成的sql语句放到sql server 中去运行了一下,查询出来的符合条件的记录有17列,为什么在GridView中显示出来的记录只有两列?是不是那里要设置一下?
------最佳解决方案-------------------- 你的q是有17列,但是你查询的后面的select是只有两列的
e1.FirstName,e1.LastName 所以最后绑定的时候是只有两列的。
把其他需要显示的列也加上去。
------其他解决方案-------------------- 你跟综一下q的值,不要改动SQL语句,
GridView1.DataSource = q;
GridView1.DataBind();
就是这个Q的值
------其他解决方案--------------------
select new
{
e1.FirstName,
e1.LastName,
Order = o
};
LZ,会不会是你最后在筛选的时候是查了FirstName和LastName
把这个改成select e1看下看呢
------其他解决方案-------------------- select new
{
e1.FirstName,
e1.LastName,
Order = o
};
你这个只找了 e1.FirstName,
e1.LastName两列。。。。
------其他解决方案-------------------- 引用: 引用:select new
{
e1.FirstName,
e1.LastName,
Order = o
};
你这个只找了 e1.FirstName,
e1.LastName两列。。。。
我调试的时候看了下q的值 var q = from ……
因为你这个linq只查出了两列,要想显示十七列,就一个一个写吧
id=o.id
name=o.name
……
------其他解决方案-------------------- 有SQL 不用非的用 linq ,第一如果对象绑定一定要有个共有属性和 GridView 的DataboundFile 对应。要不不会显示的。
------其他解决方案-------------------- 你断点一下q,查看q的值是多少个
------其他解决方案--------------------