如何在button_click上的ASP.Net Webform中的一个GridView中连接多个表的数据

时间:2013-02-12 14:58:08

标签: asp.net gridview linq-to-entities

我在GridView中单击一次按钮时填充所有交易数据。但是,数据库中的Transaction表不包含Dimension表(例如Account表)数据,例如Transaction表包含AccountID,但它没有AccountName属性,我必须从Account表中获取该属性。在DataAccess层中,方法(GetAllTransactions())确实包含AccountID上的Transaction和Account表之间的连接,但是当我尝试选择account.AccountName时,它不起作用。

我只需要在TransactionID中显示几个表,其中AccountID可以在其中显示,并在Transaction表中显示AccountName列而不是AccountID。

DataAccess方法如下所示:

    public static IEnumerable<Transaction>GetAllTransactions()
    {
        List<Transaction> allTransactions = new List<Transaction>();
        using (var context = new CostReportEntities())
        {
            allTransactions = (from t in context.Transactions
                               join account in context.Accounts on t.AccountID equals account.AccountID
                               select t).ToList();
        }          
        return allTransactions;
    } 

和.aspx页面背后的代码如下:

    protected void _UIButtonSubmit_Click(object sender, EventArgs e)
    {
        IEnumerable<Transaction> transactions = ts.GetAllTransactions();
        _UITransactionGridView.DataSource = transactions;
        _UITransactionGridView.DataBind();
        _UITransactionGridView.PageIndex = 0;

    }

尝试了以下几点,但我没有得到LINQ的想法。以下是错误。

...select new {t.*, account.AccountName}).ToList();

我需要一个方向,我应该考虑使任务工作从一个GridView中的多个表填充数据。谢谢。

1 个答案:

答案 0 :(得分:0)

由于我的Model for Transaction没有Account表的任何属性,我必须创建一个ViewModel类型类,它为每个Transaction返回AccountNumber的自定义数据。

我用来解决问题的代码是this