Получить выбранное значение из asp SharePoint DropDownList пользовательского типа класса - PullRequest
0 голосов
/ 22 мая 2019

Я пишу приложение для SharePoint. Там у меня есть страница с выпадающим списком. я имею обработчик для SelectedIndexChanged. Я хочу получить выбранное значение, но как CustomObject, и я вижу только вариант string. Я попытался SelectedValue, и это все еще string.

Вот так я настраиваю список:

protected void Page_Load(object sender, EventArgs e)
{
    List<CustomObject> customList = //retrieving data
    myDropDownList.DataSource = customList.Select(x => new { x.Name, Value = x});
    myDropDownList.DataTextField = "Name";
    myDropDownList.DataValueField = "Value";
    myDropDownList.DataBind();
}

И это один из способов, которые я попробовал:

protected void myDropDownList_SelectedIndexChanged(object sender, EventArgs e)
{
    var index = groupingDropDownList.SelectedIndex;
    CustomObject obj =  (CustomObject)myDropDownList.Items[index].Value;
    obj.DoSomething();
}

Это вообще возможно? Или я должен иметь где-то словарь с объектами?

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

Вы привязываете объект (x => new { x.Name, Value = x}) к раскрывающемуся значению, вы должны привязать к нему фактическое значение.

Тестовая демонстрация:

public class CustomObject
    {
        public int ID { get; set; }
        public string Name { get; set; }

        public CustomObject(int _ID,string _Name)
        {
            this.ID = _ID;
            this.Name = _Name;
        }
    }
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            List<CustomObject> customList = new List<CustomObject>();
            customList.Add(new CustomObject(1,"test1"));
            customList.Add(new CustomObject(2,"test2"));
            myDropDownList.DataSource = customList.Select(x => new { x.Name, Value = x.ID });
            myDropDownList.DataTextField = "Name";
            myDropDownList.DataValueField = "Value";
            myDropDownList.DataBind();
        }
    }
0 голосов
/ 22 мая 2019

Вы захотите использовать атрибуты данных html5, которые затем сможете поместить в раскрывающиеся меню.Вот пример того, что вы могли бы сделать со своими данными.

          // add Agencies' addresses as HTML5 data-attributes.
            var agencies = agencyNames.ToList();
            for (int i = 0; i < requesting_agency.Items.Count - 1; i++) {
                requesting_agency.Items[i + 1].Attributes.Add("data-address", 
                agencies[i].address);
                servicing_agency.Items[i + 1].Attributes.Add("data-address", 
                agencies[i].address);
            }

Затем при обработке информации вы можете сделать что-то вроде этого.

    var index = groupingDropDownList.SelectedIndex;
    var selectedText = myDropDownList.Items[index].SelectedValue;
    var selectedValue = myDropDownList.Items[index].Attributes["attribute"];
    // put into obj
    // do something with object

Дайте мне знать, если у вас есть какие-либо вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...