1

我目前正在开发一个 Web 应用程序,它使用不同的约束多次查询一个数据库表。我正在使用 ASP .NET 3.5 ListView。我有大约 10 个不同的列表视图。有没有一种方法可以让我一次查询整个表,然后将它们分成单独的表到 ASP .NET Listviews 中?

有没有办法利用一个查询和输出到多个 ASP .NET 列表视图?或者有没有办法使用 1 个 SQL 数据源,并将其与 2 个 Listview 一起使用?

如果这是不可能的,我可以将 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”的定义,并且找不到接受“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 回答