Как связать свойство DataTextField раскрывающегося списка ASP.NET с вложенным свойством - PullRequest
4 голосов
/ 19 апреля 2011

Я хочу связать свойство DataTextField раскрывающегося элемента управления ASP.NET со свойством объекта, который является свойством исходного источника данных.Как мне выполнить эту конкретную задачу.

Раскрывающаяся схема данных источника данных

public class A
{
   public string ID { get; set; }
   public B { get; set; }
} 

public class B
{
   public string Name { get; set; }  //want to bind the DataTextField to this property
}

Код ASP.NET позади

DropDownList MyDropDownList = new DropDownList();
List<A> MyList = GetList();

MyDropDownList.DataSource = MyList;
MyDropDownList.DataValueField = "ID";

Ответы [ 4 ]

11 голосов
/ 19 апреля 2011

Скажем, у вас есть список A, и вы хотите, чтобы A.ID было полем ID, а ABName было полем имени, вы не можете напрямую привязать к B.Name, поэтому вы должны создать новое свойство A, чтобы вытащить имя из свойства B в A, или вы можете использовать Linq для создания анонимного типа, который делает это для вас так:

List<A> ListA = new List<A>{
    new A{ID="1",Item = new B{Name="Val1"}},
    new A{ID="2", Item =  new B{Name="Val2"}} ,          
    new A{ID="3", Item =  new B{Name="Val3"}}};

DropDownList1.DataTextField = "Name";
DropDownList1.DataValueField = "ID";
DropDownList1.DataSource = from a in ListA
                           select new { ID, Name = a.Item.Name };
0 голосов
/ 25 июня 2015

Вам не хватает всей важной строки DataBind!

MyDropDownList.DataBind();
0 голосов
/ 23 февраля 2013

Вот 2 примера связывания выпадающего списка в ASP.net из класса

Ваша страница aspx

    <asp:DropDownList ID="DropDownListJour1" runat="server">
    </asp:DropDownList>
    <br />
    <asp:DropDownList ID="DropDownListJour2" runat="server">
    </asp:DropDownList>

Ваша страница aspx.cs

    protected void Page_Load(object sender, EventArgs e)
    {
    //Exemple with value different same as text (dropdown)
    DropDownListJour1.DataSource = jour.ListSameValueText();            
    DropDownListJour1.DataBind();

    //Exemple with value different of text (dropdown)
    DropDownListJour2.DataSource = jour.ListDifferentValueText();
    DropDownListJour2.DataValueField = "Key";
    DropDownListJour2.DataTextField = "Value";
    DropDownListJour2.DataBind();     
    }

Вашкласс jour.cs (jour.cs)

public class jour
{

    public static string[] ListSameValueText()
    {
        string[] myarray = {"a","b","c","d","e"} ;
        return myarray;
    }

    public static Dictionary<int, string> ListDifferentValueText()
    {
        var joursem2 = new Dictionary<int, string>();
        joursem2.Add(1, "Lundi");
        joursem2.Add(2, "Mardi");
        joursem2.Add(3, "Mercredi");
        joursem2.Add(4, "Jeudi");
        joursem2.Add(5, "Vendredi");
        return joursem2;
    }
}
0 голосов
/ 15 февраля 2013
    cmb_category.DataSource = cc.getCat(); //source for database
    cmb_category.DataTextField = "category_name";
    cmb_category.DataValueField = "category_name";
    cmb_category.DataBind();
...