ASP.NET下拉列表:为选项绑定更多值

ASP.NET下拉列表:为选项绑定更多值,asp.net,drop-down-menu,Asp.net,Drop Down Menu,我有一个表,有三列ID、Name和shortname。我正在将此绑定到ASP.NET dropdonwlist控件。我将DataTextField指定为ID,DataValueField指定为Name 现在,下拉列表正确呈现列表项,我可以选择所选选项的ID。我想有一个简短的名字也与ID。有没有办法做到这一点?例如,我想从ASP.NET dropdownlist的选定选项中读取ID、短名称和名称 有什么想法吗 public class SomeClass { public int Id {

我有一个表,有三列
ID
Name
shortname
。我正在将此绑定到ASP.NET dropdonwlist控件。我将
DataTextField
指定为
ID
DataValueField
指定为
Name

现在,下拉列表正确呈现列表项,我可以选择所选选项的ID。我想有一个简短的名字也与ID。有没有办法做到这一点?例如,我想从ASP.NET dropdownlist的选定选项中读取ID、短名称和名称

有什么想法吗

public class SomeClass
{
    public int Id { get; set; }
    public string ShortName { get; set; }
    public string Name { get; set; }

    public string ShortNameWithId
    {
        get
        {
            return string.Format("{0} - {1}", Id, ShortName);
        }
    }
}
现在使用短名称WithID,intead of Id。 因此,这将作为某种集合(someclass)数据绑定到listbox,即列表IEnumerable

Protected Function Fld(ByVal pos As Integer, ByVal mfld As String) As String
    Dim i, j, k As Integer
    For i = 1 To pos
        k = j + 1
        j = InStr(k, mfld, Chr(13))
        j = IIf(j = 0, Len(mfld) + 1, j)
    Next
    Return Mid(mfld, k, j - k)
End Function

Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    Label1.Text = Fld(1, DropDownList1.SelectedItem.Value)
    Label2.Text = Fld(2, DropDownList1.SelectedItem.Value)
End Sub
或者您可以使用:

Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim Fld As Array
    Fld = DropDownList1.SelectedItem.Value.Split(Chr(13))
    Label1.Text = Fld(0)
    Label2.Text = Fld(1)
End Sub
在DataValueField中还可以有更多列

    drp.Items.Clear();
    foreach (var item in sourceCollection)
    {
        drp.Items.Add(new ListItem(item.ID+ "," + item.Name + "," + item.ShortName, item.ID));
    }

    //read selected text or value like this:

    string txt = drp.SelectedItem.Text;
    string val = drp.SelectedItem.Value;