2011-09-15 9 views
0

へのIQueryableを返すための正しい構文はどのようなものです。以下は、指定したIDの画像のリストを返すビジネスロジッククラスのコードです。私の後ろに私のコードでは私はにSqlDataSourceコントロールを排除するために、いくつかのリファクタリングをやっているデータバインドコントロール

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; 

    } 
} 

次のようなものを実行して、ASPのリピータにのIQueryableオブジェクトをバインドしようとしています。

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

マイ項目テンプレートは、バインドされたIQueryableオブジェクトからファイル名を結合し、単純なイメージタグが含まれています。例:

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

私の質問には2つの部分があります。まず、BusinessLogicクラスの内部で正しい構文を使用していますか?私はそれが私のコードの後ろからGetPackageImagesにアクセスすることができないためではないと思う。第二に、データソースを正しく指定しなかったことはほぼ確実です。どうすれば修正できますか?

ありがとうございました!

答えて

0

...あなたはインスタンス方法として、それを宣言しましたが、あなたはタイプBusinessLogicBusinessLogicというプロパティを持っていない限り、あなたは、静的方法としてそれを取得しようとしているだけで作ってみましょうそれは、静的:

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

私はデータバインディングについて多くを知らないが、それは大丈夫かもしれないようです。

は個人的に私はGetPackageImagesにクエリ式を使用していないだろう、と私はまた、あなたを気にし、PascalCaseとローカル変数の名前を指定しません。私はちょうど使用する:

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

ありがとうジョン。これは非常に参考になりました。私はまだこのクエリをバインドするデータへの正しい方法を理解しようとしています。 – hughesdan

+0

データバインディングは、質問に示されているとおりに正確に動作します。 – hughesdan

関連する問題