Выбранный элемент в списке продолжает возвращаться ноль - PullRequest
0 голосов
/ 16 октября 2019

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

я пробовал .selectedvalue я пробовал .selecteditem и .selecteditems все возвращают нуль

 ID = ExpireditemInfo.GetItemText(ExpireditemInfo.SelectedItem);

ID - это строка

Это мой источник, я использую dapper

        loadinventory = iteminfo.GetExpireinfo(now,expirationDate);

        ExpirationID.DataSource = loadinventory;

        ExpirationID.DisplayMember = "Expireing_ID";

моя модель данных

        public string Transaction_ID { get; set; }
        public string Type_Of_Transaction { get; set; }
        public string Name { get; set; }
        public string Quantity { get; set; }
        public string Unit { get; set; }

        public string Expireing_ID
        {
          get
          {
            return $"{Transaction_ID}";
          }
        }

Я хочу выбрать число 6из списка и т. д. и сохранить этот выбор в строку, которую я затем преобразую в int для прохождения через хранимую процедуру. int для столбца id базы данных, поэтому он должен быть входным при передаче в базу данных.

Неужели 6 не распознается как строка, и если да, то как мне выбрать его?

Ответы [ 2 ]

1 голос
/ 16 октября 2019

Я пытаюсь выбрать номер из списка, но когда я запускаю код, он возвращает нуль

После того, как вы видите привязку к вашему ListBox, онкажется, вы не устанавливаете свойство ValueMember, тем самым вы можете иметь фактические DisplayMember и ValueMember, которые представляют фактическое базовое значение этого экранного объекта.

Вот что я хотел бы сделать, этоэто всего лишь один пример:

 // Holds the actual selected items value
 public string ExpirationIDValue {get; private set;}

 // Anytime the selected index changes, we update our property. You can 
 // put this on the constructor and or on load.
 ExpirationID.SelectedIndexChanged += ExpirationID_SelectedIndexChanged;

 // Event handler for when selection changes
 private void ExpirationID_SelectedIndexChanged(object sender, EventArgs e)
 {
    if (sender is ListBox listBox && listBox.SelectedValue != null)
    {
       ExpirationIDValue = listBox.SelectedValue.ToString();
    }
 }

 // This was for testing, just to get some data, you can ignore this
 DataTable dataTable = new DataTable();
 dataTable.Columns.Add(new DataColumn("Expireing_ID",typeof(string)));
 dataTable.Columns.Add(new DataColumn("Expireing_ID_Display",typeof(string)));

 int i = 1;
 while(i < 10)
 {
    dataTable.Rows.Add(i.ToString(),$"Display {i}");
    i++;
 }

 // Here you need to make sure you set these properties to your actual
 // property names.     
 ExpirationID.DataSource = dataTable;      
 ExpirationID.DisplayMember = "Expireing_ID_Display";
 ExpirationID.ValueMember = "Expireing_ID";

Примечание: ваше событие selectedindexchanged может сработать рано и вызвать исключение; вы можете создать переменную bool и при загрузке установить ее в значение true, а затем в этом событии убедиться, чтонеправда. В конце загрузки данных установите значение false.

Надеюсь, это решит вашу проблему, если есть что-то, чего вы не понимаете или нуждаетесь в дальнейшем уточнении, пожалуйста, дайте мне знать.

0 голосов
/ 16 октября 2019

код ключа: открытая строка ExpirationIDValue {get;приватный набор;}

         private void ExpirationID_SelectedIndexChanged(object sender, EventArgs e)
          {

           **keycode:** ExpirationIDValue =ExpirationID.GetItemText( 
           ExpirationID.SelectedItem);
           int ID;
           ID = Convert.ToInt32(ExpirationIDValue);

           loadinventory = iteminfo.ExpireitemInfo(ID);
           ExpireditemInfo.DataSource = loadinventory;
           ExpireditemInfo.DisplayMember = "Expireing_info";
          }

Обратите внимание, что указывать значение не нужно.

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