2009-05-21 11 views
0

私は3列のテーブルID,Nameおよびshortnameを持っています。私はこれをASP.NET dropdonwlistコントロールにバインドしています。私はDataTextFieldID,DataValueFieldとしてNameと指定しました。ASP.NETドロップダウンリスト:バインディングオプションの追加値

これで、ドロップダウンリスト項目が正しく表示され、選択したオプションのIDを選択できるようになりました。 IDとも短い名前を付けたいです。これを行う方法はありますか?私。 ASP.NETドロップダウンリストの選択されたオプションからID、ショートネーム、ショートネームを読みたい

どのような考えですか?

答えて

1
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); 
     } 
    } 
} 

ここで、Idの代わりにShortNameWithIdを使用します。 だから、これは

0
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 

IEnumerableを、すなわちリスト(工assの)コレクションのいくつかの並べ替えとして、リストボックスにデータバインドされるだろうそれとも、使用することができます:

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に多くの列を持つことができます。

0
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; 
関連する問題