大家好,我一直在尝试将一些对象放在ASP.NET列表框中,但它只是不起作用。
我有一个重写的ToString方法,所以我无法理解为什么这个语句不起作用。 这是我使用的代码:
for (int i = 0; i < fitnessClassList.Count(); i++)
{
lbDisplayItems.Items.Add(fClassList.getFClass(i));
}
我得到的错误:
Error 2 Argument 1: cannot convert from
'FitClassManage' to
'System.Web.UI.WebControls.ListItem'
Error 1 The best overloaded method match for
'System.Web.UI.WebControls.ListItemCollection.Add(System.Web.UI.WebControls.ListItem)'
has some invalid arguments
答案 0 :(得分:2)
ASP.NET ListBox与WinForms ListBox不同。你无法向他添加任何对象。其项目集(ListItemCollection)仅限于ListItem(因此您无法添加依赖ToString()
进行可视化的业务对象)。
使用此代码:
ListItem listItem = new ListItem(fitnessClassList.getFitnessClass(i).ToString());
lbDisplayItems.Items.Add(listItem);
不要忘记,如果您使用ListItem
,则不会有对象,而是显示名称(ToString()
的结果)。有关详细信息,请参阅有关ListItem
的链接。
作为替代方案,您可以将DataSource的ListView设置为fitnessClassList
(如果它以任何方式支持,请参阅此overview on MSDN)。
答案 1 :(得分:1)
听起来您想在列表框中显示“自定义”项。我让它做了以下工作:
当我以编程方式将项目添加到myListBox时,我的自定义项目已显示!!
答案 2 :(得分:0)
Method Add期望ListItem对象(或字符串,请参阅下面的链接),但是您要传递一个自定义类。
您可能想要关注:
lbDisplayItems.Items.Add(new ListItem(fitnessClassList.getFitnessClass(i).ToString()));
请参阅http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listitemcollection.aspx - 只有2种“添加”方法。
有关可用的构造函数,请参阅http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listitem.aspx。
答案 3 :(得分:0)
您需要在列表框中使用.DataSource和.DataBind属性。
lbDisplayItems.DataSource = fitnessClassList;
lbDisplayItems.DataBind();
查看此链接以获取一个小例子 http://asp-net-example.blogspot.com/2011/10/how-to-databind-listbox-using-stack.html