无法让我的列表框显示对象

时间:2012-03-22 20:49:55

标签: c# asp.net listbox

大家好,我一直在尝试将一些对象放在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

4 个答案:

答案 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的链接。

作为替代方案,您可以将DataSourceListView设置为fitnessClassList(如果它以任何方式支持,请参阅此overview on MSDN)。

答案 1 :(得分:1)

听起来您想在列表框中显示“自定义”项。我让它做了以下工作:

  • 我创建了一个usercontrol,它具有我想要的名为MyListItem的控件。在我的情况下,我想要一个复选框和文本字段。
  • 我创建了一个新的myListBox,它继承自ListBox并创建了一个Add方法。此方法执行以下操作:
  • 它有一个字符串参数用于显示文本
  • 它创建了一个MyListItem实例,并将文本字符串分配给其Text属性。
  • 我分配了一个事件处理程序来响应checkBox检查事件。
  • 我将自定义项添加到myListBox.controlls。

当我以编程方式将项目添加到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