列表框中的选定项一直返回空值

Selected item in list box keeps returning null

我正在尝试 select 我的列表框中的给定数字但是当我 运行 代码时 return 为 null

我试过 .selectedvalue 我试过 .selecteditem 和 .selecteditems 全部 return 空

 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}";
          }
        }

我想 select 列表框等中的数字 6 并将 selection 存储在一个字符串中,然后我将其转换为一个 int 以通过存储过程传递。 int 用于数据库的 id 列,因此在传递给数据库时它必须是 in。

是不是 6 没有被识别为字符串,如果是,我该如何 select 呢?

i am trying to select a given number from my list box but when i run the code it returns null

在看到您绑定到 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,然后在事件中确保它不是 true。在加载数据结束时,将其设置回 false。

希望这能解决您的问题,如果有什么不明白或需要进一步说明,请告诉我。

keycode: public string 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";
          }

请注意,valuemember 不是必需的。