将IQueryable返回到数据绑定控件的正确语法是什么

时间:2011-09-15 21:21:36

标签: c# linq-to-sql

我正在做一些重构以消除SqlDataSource控件。下面是我的业务逻辑类中的代码,用于返回给定ID的图像列表。

public class BusinessLogic
{        
    public IQueryable<SBMData2.File> GetPackageImages(int id)
    {
        SBMData2.SBMDataContext db = new SBMData2.SBMDataContext();

        IQueryable<SBMData2.File> PackageImages = from f in db.Files
                                                  where f.PackageID == id
                                                  select f;
        return PackageImages;

    }
}

在我的代码中,我试图通过执行以下操作将IQueryable对象绑定到asp转发器。

int id = RadGrid1.SelectedValues["id"].ToString();
Repeater1.DataSource = BusinessLogic.GetPackageImages(id);
Repeater1.DataBind();

我的项目模板包含一个简单的图像标记,它从绑定的IQueryable对象绑定FileName。例如:

<img src="PackageFile.ashx?Thumb=true&Id=<%# DataBinder.Eval(Container.DataItem, "FileName").ToString() %>" alt="loading image ..."/>

我的问题有两个部分。首先,我的语法在BusinessLogic类中是否正确?我怀疑这不是因为我无法从后面的代码中访问GetPackageImages。其次,我几乎可以肯定我没有正确指定我的数据源。我该如何纠正?

谢谢!

1 个答案:

答案 0 :(得分:0)

您已将其声明为实例方法,但您尝试将其作为静态方法获取,除非您有一个名为{的属性类型为BusinessLogic的{​​1}} ...尝试将其设为静态:

BusinessLogic

我对数据绑定知之甚少,但它似乎可以没问题。

我个人不会在public static IQueryable<SBMData2.File> GetPackageImages(int id) 中使用查询表达式,我也不会用PascalCase命名局部变量,请注意。我只是用:

GetPackageImages