1

私は現在、異なる制約で1つのデータベーステーブルを複数回クエリするWebアプリケーションに取り組んでいます。ASP .NET3.5ListViewを利用しています。私は約10の異なるリストビューを持っています。テーブル全体を一度だけクエリしてから、それらを別々のテーブルに分離してASP .NETリストビューにする方法はありますか?

1つのクエリを利用して複数のASP.NETリストビューに出力する方法はありますか?または、1つのSQLデータソースを使用して、2つのリストビューで使用する方法はありますか?

これが不可能な場合、ASP.NETリストビューを別のASP.NETリストビューにコピーできますか?このコードを試しましたが、エラーが発生します:

         private void CopySelectedItems(ListView source, ListView target)
        {
           foreach (ListViewItem item in source.SelectedItems)
           {
               target.Items.Add((ListViewItem)item.Clone());
           }
        } 

エラーは次のとおりです。

エラー1「System.Web.UI.WebControls.ListView」に「SelectedItems」の定義が含まれておらず、「System.Web.UI.WebControls.ListView」タイプの最初の引数を受け入れる拡張メソッド「SelectedItems」が見つかりませんでした( usingディレクティブまたはアセンブリ参照がありませんか?)

エラー2「System.Web.UI.WebControls.ListViewItem」に「Clone」の定義が含まれておらず、「System.Web.UI.WebControls.ListViewItem」タイプの最初の引数を受け入れる拡張メソッド「Clone」が見つかりませんでした( usingディレクティブまたはアセンブリ参照がありませんか?

エラー3'System.Collections.Generic.ICollection.Add(System.Web.UI.WebControls.ListViewDataItem)'に最適なオーバーロードされたメソッドの一致には、いくつかの無効な引数があります

エラー4引数「1」:「System.Web.UI.WebControls.ListViewItem」から「System.Web.UI.WebControls.ListViewDataItem」に変換できません

4

1 に答える 1

2

単一のデータベース クエリをリストにロードし、リストのWhere拡張メソッドを使用して個々のListViewコントロールにバインドできます。

たとえばMyDataClass、文字列プロパティを持つクラスにデータがロードされたとしMyProperty1ます。

List<MyDataClass> myList = MyDataAccessLayer.GetFromDatabase();

ListView1.DataSource = myList.Where(item => item.MyProperty1 == "value1");
ListView1.DataBind();
...
ListView10.DataSource = myList.Where(item => item.MyProperty1 == "value10");
ListView10.DataBind();
于 2012-05-08T15:03:58.007 に答える