首页 > 解决方案 > C#如何只将列表中的一个值返回到ComBox?而不是所有

问题描述

我的目标是将单个值返回CustomerName到 ComboBox 中。

这就是我从数据库中获取数据的方式:

public class DataAccess
{
    public List<ComplaintModel> FindOrderNumber(string orderNumber)
    {
        using(SqlConnection conn = new SqlConnection(ConnectionString.MJMconnString))
        {
            var output = conn.Query<ComplaintModel>($@"
                    SELECT 
                    TRIM(p.description) as Product,
                    c.name AS CustomerName,
                    FROM SalesOrder so JOIN SalesOrderLine sol ON
                    so.id = sol.salesOrderID JOIN Customer c ON
                    so.customerID = c.id JOIN Product p ON
                    sol.productID = p.id WHERE so.number = '{orderNumber}'").ToList();
            return output;
        }
    }
}

这将是输出(使用 Excel 向您展示一个粗略的想法):

在此处输入图像描述

所以 ComboBoxes 看起来像这样:

在此处输入图像描述

在此处输入图像描述

快速总结

对于特定的客户名称将始终相同,OrderNumber但产品会有所不同。

形式

在我的表单中,我加载了ProductandCustomer组合框。(注意:我知道您可能正在考虑使用 TextBox 而不是 ComboBox Customer,它只是需要)。

List<ComplaintModel> OrderNumber = new List<ComplaintModel>();

public void searchButton_Click(object sender, EventArgs e)
{
    clearBindings();

    DataAccess db = new DataAccess();
     
    // Search Order Number that is specified in a text box
    OrderNumber = db.FindOrderNumber(orderNumber.Text);
  
    // List all products
    product.DataSource = OrderNumber;
    product.DisplayMember = "Product";

    // Show customer name - but as [0] instead of all.
    customer_name.DataSource = OrderNumber;
    customer_name.DisplayMember = "CustomerName";
    

}

组合框的期望输出

在此处输入图像描述

这是我的模型

public class ComplaintModel
{
    public string CustomerName { get; set; }
    public string Product { get; set; }
}

问题

如何仅将单个值检索CustomerName到 ComboBox 中?

标签: c#

解决方案


您需要创建:Customer 类、Order 类。

然后您需要为两个组合框创建两个列表: List<Customer> customers对于客户组合框 List<Order> orders,用于订单组合框以显示所选客户的订单(在组合框更改事件上)。

public class Customer
{
public string Id {get;set;}
public string Name {get;set;}
public List<Order> Orders {get;set;}
}

public class Order
{
public string Id {get;set;}
public string Name {get;set;}
public int CustomerId {get;set;}
}

推荐阅读