我目前正在开发一个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'
答案 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();