有没有办法在aspx C#中附加Listbox的DataTextField?

时间:2012-06-05 13:00:20

标签: c# data-binding

我有一个列出项目名称的数据绑定列表框,我现在想要显示项目编号和项目名称,如下所示:i-001 - 项目1.我做了类似的事情,但是当我没有使用数据文本字段时,却改为使用iDataReaders。

所以我可以追加datatextfield属性来接受多个列吗?在aspx页面或后面的代码中?

如果有任何可以提供帮助的代码我可以提供给您,如果有任何清理可以做,我会尽力这样做。

谢谢

示例代码:

listItems.DataSource = DAL.Util.getItemProfiles(vendor,catalog);
listItems.DataBind();


public string ItemNumName
{
    get { return "CustItemNum" + " - " + "Name"; }
}

protected void listItems_DataBound(object sender, EventArgs e)
{
    listItems.DataTextField = ItemNumName;
}

这会导致以下错误消息:

DataBinding:'System.Data.DataRowView'不包含名称为'CustItemNum - Name'的属性。

如果我从属性中删除了+“ - ”+“Name”,它只通过显示CustItemNum字段正确运行

3 个答案:

答案 0 :(得分:1)

您可以向模型中添加一个新属性,该属性组合了两个字段并将其用作数据值

  public string SomeProperty
  {
      get{return  itemnumber + "-"+ itemName ; }
  }

答案 1 :(得分:1)

您可以在ListBox的OnDataBound事件中执行此操作。例如:http://asp-net-example.blogspot.com/2011/07/how-to-use-listbox-ondatabound-event-in.html

 protected void ListBox1_DataBound(object sender, EventArgs e)  
    {  
//... your logic here to set the text of the item
}

答案 2 :(得分:1)

你也可以编辑你的sql以连接两列,然后将它用作你的datatextfield。使用提供的变量名称,它看起来像:

Select CustItemNum, Name,  CustItemNum + ' - ' + Name AS NumberName

那么你应该可以使用NumberName作为DataTextField,它应该显示为“itemNumber - itemName”