我有以下两行;
var currentPage = Directory.GetFiles(@"D:\mydir", "*.pdf")
.Skip((pageNum - 1) * pageSize).Take(pageSize);
var allItems = currentPage.OrderBy(c => c)
.Select(c => new ListViewItem(c)).ToArray();
以上2行失败,“CS1502:'System.Web.UI.WebControls.ListViewItem.ListViewItem(System.Web.UI.WebControls.ListViewItemType)'的最佳重载方法匹配'有一些无效的参数”。根据VS2010,错误是“新的ListViewItem( c )”。
我在想我错过了一些非常明显的东西 - 但我只是看不到它。
答案 0 :(得分:2)
Directory.GetFiles()
返回一个字符串数组。然后,您将获取这些字符串并尝试通过将字符串传递给ListViewItem构造函数来创建System.Web.UI.WebControls.ListViewItem
数组。
问题是没有ListViewItem
的构造函数接收字符串。
only constructor接收ListViewItemType
public ListViewItem(
ListViewItemType itemType
)
这就是你收到错误的原因
System.Web.UI.WebControls.ListViewItem.ListViewItem(System.Web.UI.WebControls.ListViewItemType)的最佳重载方法匹配有一些无效的参数
答案 1 :(得分:0)
如果这是winforms,您应该删除 using System.Web.UI.WebControls;
指令并确保改为using System.Windows.Forms;
。
如果这是asp.net,则无法使用ListViewItem
作为构造函数的参数创建String
的实例。有关构造函数的详细信息,请参阅MSDN上的here。
答案 2 :(得分:0)
您正在尝试传递ListViewItem上一个查询的结果,该查询是一个字符串(文件名)。 ListViewItem没有接受它的构造函数。
尝试读取List或其他内容中的字符串,然后将其作为数据源添加到ListView控件中。
答案 3 :(得分:0)
var allItems = currentPage.OrderBy(c =&gt; c).Select(c =&gt; new ListViewItem((ListViewItemType)Enum.Parse(typeof(ListViewItemType),c,true)))。ToArray(); < / p>
摆脱错误,不知道这是否有助于你
答案 4 :(得分:0)
所以看起来你正试图将ListView绑定到这个指定文件名数组。您是否尝试过设置ListView的DataSource?
像这样:
myListView.DataSource = null;
var currentPage = Directory.GetFiles(@"D:\mydir", "*.pdf")
.Skip((pageNum - 1) * pageSize).Take(pageSize);
var dataArray = currentPage.OrderBy(c => c).ToArray();
myListView.DataSource = dataArray;
myListView.DataBind();
有关绑定到IEnumerable的更多内容:http://forums.asp.net/t/1319474.aspx/1
希望有帮助...