2016-10-03 4 views
0

Если у меня есть таблица с столбцами Id, Name, Attack, SortOfWeapon. И в раскрывающемся списке Text = "Name" и Value = "Id". Когда я нажимаю кнопку, могу ли я использовать другие свойства SelectedItem (Country и Zip)?Свойства dropdownlist SelectedItem ASP.NET

protected void Page_Load(object sender, EventArgs e) 
    { 
     foreach (Weapon weapon in GetWeapons()) 
     { 
      DropDownListOfWeapon.Items.Add(weapon.Name); 
     } 

    } 
protected IEnumerable<Weapon> GetWeapons() 
    { 
     return weaponRepository.Weapons 
      .OrderBy(a => a.Name); 

    } 

Когда пользователь выбирает элемент и нажимает кнопку, в функции должны быть указаны значения свойств выбранного элемента.

+1

Смотрите HTTP://stackoverflow.com/questions/38150214/asp-net-how-to-create-cascading-dropdownlists-boxes-using-single-data-table/39230066#39230066? Ваш вопрос похож на – VDWWD

+0

Что значит другие ценности? вы ищете каскадные выпадающие списки (так что вы выбираете элемент в первом, и он используется для заполнения второй релевантными данными), или вы хотите выбрать элемент в раскрывающемся списке, а затем получить доступ ко всем свойствам выбранного элемента? И зачем писать свой вопрос об адресах, если образец кода касается оружия? Это делает для вас трудным дать вам пример! – Matt

+0

@VDWWD извините, но я не понимаю ваш пример. Как я могу применить к свойствам selectedItem? В webforms, если я использую List <> как DataSourse, я могу применить ко всем свойствам SelectedItem. – cruim

ответ

1

Я думаю, что вы ищете что-то вроде этого (не уверен на 100%, хотя)

На странице ASPX:

<asp:DropDownList ID="DropDownListOfWeapon" runat="server" OnSelectedIndexChanged="DropDownListOfWeapon_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList> 
    <br /><br /> 
    <asp:Literal ID="Literal1" runat="server"></asp:Literal> 

В коде позади:

protected void Page_Load(object sender, EventArgs e) 
    { 
     //check for postback 
     if (!IsPostBack) 
     { 
      //fill the dropdown 
      DropDownListOfWeapon.DataSource = GetWeapons(); 
      DropDownListOfWeapon.DataTextField = "Name"; 
      DropDownListOfWeapon.DataValueField = "Id"; 
      DropDownListOfWeapon.DataBind(); 

      //add a select text at the first position 
      DropDownListOfWeapon.Items.Insert(0, new ListItem("Select a weapon", "-1", true)); 
     } 
    } 

    private List<Weapon> GetWeapons() 
    { 
     //create a new list 
     List<Weapon> weaponList = new List<Weapon>(); 

     //fill the list with dummy weapons 
     //this probly would come from a database or other external source 
     for (int i = 0; i < 10; i++) 
     { 
      Weapon weapon = new Weapon(); 
      weapon.Id = i; 
      weapon.Name = "Weapon " + i; 
      weapon.Attack = "Attack " + i; 
      weapon.SortOfWeapon = "Sort of weapon " + i; 
      weaponList.Add(weapon); 
     } 

     //sort the list alphabetically 
     weaponList = weaponList.OrderBy(x => x.Name).ToList(); 

     return weaponList; 
    } 

    protected void DropDownListOfWeapon_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     //get the id from the dropdown 
     int Id = Convert.ToInt32(DropDownListOfWeapon.SelectedValue); 

     if (Id < 0) 
     { 
      //clear the literal when no selection is made 
      Literal1.Text = ""; 
     } 
     else 
     { 
      //get the correct weapon from the list based on it's id using Linq 
      List<Weapon> weaponList = GetWeapons().Where(x => x.Id == Id).ToList(); 

      //show the properties in the literal 
      Weapon weapon = weaponList[0]; 
      Literal1.Text = weapon.Id + "<br />"; 
      Literal1.Text += weapon.Name + "<br />"; 
      Literal1.Text += weapon.Attack + "<br />"; 
      Literal1.Text += weapon.SortOfWeapon + "<br />"; 
     } 
    } 

    //the weapon class 
    class Weapon 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string Attack { get; set; } 
     public string SortOfWeapon { get; set; } 
    } 
+0

Кажется, это то, что я ищу, спасибо! (Извините, что я не смог проголосовать за ваш ответ-низкий репо) – cruim