如何复制包含数据库中的数据的ASP .NET列表视图?

时间:2012-05-08 13:32:55

标签: c# asp.net listview

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

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

如果无法做到这一点,我能否将ASP .NET Listview复制到另一个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'的定义,并且没有扩展方法'SelectedItems'接受类型'System.Web.UI.WebControls.ListView'的第一个参数'找到(你错过了使用指令或汇编引用吗?)

错误2'System.Web.UI.WebControls.ListViewItem'不包含'Clone'的定义,也没有扩展方法'Clone'接受类型为'System.Web.UI.WebControls.ListViewItem'的第一个参数找到(你是否错过了使用指令或汇编参考?

错误3'System.Collections.Generic.ICollection.Add(System.Web.UI.WebControls.ListViewDataItem)'的最佳重载方法匹配有一些无效的参数

错误4参数'1':无法从'System.Web.UI.WebControls.ListViewItem'转换为'System.Web.UI.WebControls.ListViewDataItem'

1 个答案:

答案 0 :(得分: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();