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

本文关键字:语法 是什么 控件 IQueryable 返回 数据绑定 | 更新日期: 2023-09-27 18:08:49

我正在做一些重构以消除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。其次,我几乎可以肯定我没有正确指定我的数据源。我怎样才能改正呢?

谢谢!

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

您已经将其声明为实例方法,但您试图将其作为静态方法,除非您有一个名为BusinessLogic的类型为BusinessLogic的属性…试着让它变成静态的:

public static IQueryable<SBMData2.File> GetPackageImages(int id)

我不太了解数据绑定,但是看起来是可以的。

我个人不会在GetPackageImages中使用查询表达式,并且我也不会使用PascalCase命名局部变量,请注意。我只用:

SBMData2.SBMDataContext db = new SBMData2.SBMDataContext();
return db.Files.Where(f => f.PackageID == id);