日期:2014-05-17  浏览次数:20472 次

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的值是多少个
------其他解决方案--------------------