基本的LINQ to SQL GridView绑定

时间:2013-12-18 22:46:31

标签: c# asp.net linq gridview

我对使用LINQ to SQL(但熟悉LINQ to objects)完全陌生,我很好奇为什么以下代码不会引发异常或错误,但是不会创建GridView并绑定数据。

这是在webform的Page_Load事件中:

ContactsDataContext db = new ContactsDataContext();
db.Contacts.Where(x => x.Phone.Length > 0);
GridView gv = new GridView();
gv.DataSource = db.Contacts;
gv.DataBind();

如果我在设计器中拖放GridView并将DataSource设置为LINQ to SQL,它将按预期工作。 LinqDataSource的标记

<asp:LinqDataSource ID="LinqDataSource1" runat="server" 
ContextTypeName="LinqExample.ContactsDataContext" EntityTypeName="" 
TableName="Contacts">
</asp:LinqDataSource>

Contacts是.dbml文件中唯一的表。我错过了什么?

2 个答案:

答案 0 :(得分:3)

调用查询的ToList()。此外,您的过滤不正确。您需要将过滤器设置为变量。你不能只调用Where()。正如您的代码现在,您将返回表中的所有联系人记录。此外,您需要将GridView添加到页面上已有的控件。

ContactsDataContext db = new ContactsDataContext();
var filteredContacts = db.Contacts.Where(x => x.Phone.Length > 0);
GridView gv = new GridView();
gv.DataSource = filteredContacts.ToList();
gv.DataBind();
this.Controls.Add(gv);

答案 1 :(得分:0)

从下面的链接看起来你需要为LINQ命令创建一个函数,该函数将返回LIST类型,然后调用它:

 protected void Page_Load(object sender, EventArgs e)  
    {  
        if (!Page.IsPostBack)  
        {  
            gvitems.DataSource = GetItemsRecord();  
            gvitems.DataBind();  

        }  

    }  

    public List<ITEM> GetItemsRecord()  
    {  
        BindGridViewDataContext db = new BindGridViewDataContext();  
        var listitemsrecord = (from x in db.ITEMs select x).ToList<ITEM>();  
        return listitemsrecord;  

    }  

https://www.c-sharpcorner.com/UploadFile/70dbe6/how-to-bind-gridview-using-linq-to-sql/