2012-05-08 51 views
1

我目前正在研究Web應用程序,它使用不同的約束條件多次查詢一個數據庫表。我正在使用ASP .NET 3.5 ListView。我有大約10種不同的列表視圖。有沒有一種方法可以將表格全部查詢一次,然後將它們分離到單獨的表格中,以便將其轉換爲ASP .NET Listviews?如何複製包含數據庫數據的ASP .NET listview?

有沒有辦法利用一個查詢並輸出到多個ASP .NET列表視圖? 或者有沒有辦法使用1個SQL數據源,並與2個Listviews一起使用?

如果這是不可能的,我能否將ASP .NET Listview複製到另一個ASP .NET listview?我試過這個代碼,但我得到一個錯誤:

  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」和沒有擴展方法'SelectedItems'接受類型'System.Web.UI.WebControls.ListView'的第一個參數可以找到(你是否缺少使用指令或程序集引用?)

錯誤2'System.Web。 UI.WebControls.ListViewItem'不包含'Clone'的定義,也沒有擴展方法'Clone'接受類型爲'System.Web.UI.WebControls.ListViewI'的第一個參數可以找到'tem'(你是否缺少使用指令或程序集引用?

錯誤3的最好重載方法匹配 'System.Collections.Generic.ICollection.Add(System.Web.UI.WebControls.ListViewDataItem)' 具有一些無效參數

錯誤4參數 '1':不能從「System.Web.UI.WebControls.ListViewItem」轉換爲「System.Web.UI.WebControls.ListViewDataItem」

回答

2

您可以將單個數據庫查詢加載到列表中,然後使用列表中的Where擴展方法綁定到您的個人ListView控件。

例如,假設數據被加載到其中有一個字符串屬性MyProperty1MyDataClass類:

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();