可以';我不想让我的列表框显示对象
本文关键字:列表 显示 对象 我的 我不想 可以 | 更新日期: 2023-09-27 18:28:38
大家好,我一直在尝试将一些对象放入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
ASP.NET ListBox与WinForms ListBox不同。你不能给他添加任何对象。它的项集合(ListItemCollection)仅限于ListItem(因此您不能添加依赖于ToString()
进行可视化的业务对象)。
使用此代码:
ListItem listItem = new ListItem(fitnessClassList.getFitnessClass(i).ToString());
lbDisplayItems.Items.Add(listItem);
请不要忘记,如果使用ListItem
,则不会有对象,而是它的显示名称(ToString()
的结果)。有关更多详细信息,请参阅有关ListItem
的链接。
或者,您可以将ListView的DataSource设置为fitnessClassList
(如果它以任何方式支持这一点,请参阅MSDN上的概述)。
听起来你想在列表框中显示一个"自定义"项目。我开始做以下工作:
- 我创建了一个用户控件,其中包含我想要的名为MyListItem的控件。在我的情况下,我想要一个复选框和文本字段
- 我创建了一个新的myListBox,它继承了ListBox并创建了Add方法。此方法执行以下操作:
- 它有一个字符串参数用于显示文本
- 它创建了MyListItem的一个实例,并将文本字符串分配给其text属性
- 我分配了一个事件处理程序来响应checkBox检查事件
- 我将我的自定义项添加到myListBox.controls中
当我用程序将项目添加到myListBox时,我的自定义项目就会显示出来!!
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可用构造函数。
您需要在列表框上使用.DataSource和.DataBind属性。
lbDisplayItems.DataSource = fitnessClassList;
lbDisplayItems.DataBind();
查看此链接以获取一个小示例http://asp-net-example.blogspot.com/2011/10/how-to-databind-listbox-using-stack.html