简体   繁体   English

如何从SQL数据库中获取数据以存储到组合框中 - C#

[英]How to get data from SQL database to store in to a combo box - C#

How can i get the value of outlet ID it on a comboBox? 如何在组合框中获取插座ID的值? here is my code to getting the values from Database and store it on a combobox. 这是我从数据库中获取值并将其存储在组合框中的代码。

public partial class Addstock : Form
{
    String connectionString = ConfigurationManager.ConnectionStrings["TCConnectionString"].ConnectionString;
    List<BOStockTransfer> StockList = new List<BOStockTransfer>();
    int updateIndex = -1;

    public Addstock()
    {
        InitializeComponent();
    }

    private void Addstock_Load(object sender, EventArgs e)
    {
        loadstock();
        GetOutlets();
        Getproduct();
        GetGetWH();
        cmdoutletID.Visible = false;
        lbloutid.Visible = false;
        cmdwh.Visible = false;
        lblwh.Visible = false;
    }

    private void GetOutlets()
    {


        BOStockTransfer obj_StockTransfer = new BOStockTransfer();
        DataSet ds_OutletList = obj_StockTransfer.GetOutlets(connectionString);

        if (ds_OutletList.Tables[0].Rows.Count != 0)
        {
            cmdoutletID.DataSource = ds_OutletList.Tables[0];
            cmdoutletID.DisplayMember = "outletId";
        }

    }

我的数据库

Thank you for your help! 谢谢您的帮助!

you are setting : 你在设置:

cmdoutletID.Visible = false;

what makes the combobox invisible 是什么让组合框看不见

you have to set it as follows : 你必须按如下方式设置它:

cmdoutletID.Visible = true;

After you added the images , the column name is outletID and Not outletId so change your code as follows : 添加图像后,列名称为outletID而不是outletId因此请按以下方式更改代码:

private void GetOutlets()
    {
    BOStockTransfer obj_StockTransfer = new BOStockTransfer();
    DataSet ds_OutletList = obj_StockTransfer.GetOutlets(connectionString);

    if (ds_OutletList.Tables[0].Rows.Count != 0)
    {
        cmdoutletID.DataSource = ds_OutletList.Tables[0];
        cmdoutletID.DisplayMember = "outletID";
        cmdoutletID.ValueMember = "outletID";
        cmdoutletID.Enabled = true;

    }

}

The combo box has two properties which determine where it loads data from: 组合框有两个属性,用于确定从何处加载数据:

DisplayMember

ValueMember

The "ValueMember" property defines which named field populates the ListItem's "ValueProperty". “ValueMember”属性定义哪个命名字段填充ListItem的“ValueProperty”。 That way, when you do combobox.SelectedItem.Value , you will get the value stored in the named field you specified for "ValueProperty". 这样,当你执行combobox.SelectedItem.Value ,您将获得存储在为“ValueProperty”指定的命名字段中的值。

Assuming that you are certain that your query is returning rows, perhaps try adding the items "manually" rather than relying on automatic databinding. 假设您确定您的查询正在返回行,可能尝试“手动”添加项目,而不是依赖于自动数据绑定。

private void GetOutlets()
{
    BOStockTransfer obj_StockTransfer = new BOStockTransfer();
    DataSet ds_OutletList = obj_StockTransfer.GetOutlets(connectionString);

    cmdoutletID.DisplayMember = "outletId";
    cmdoutletID.ValueMember = "pkID";
    cmdoutletID.BeginUpdate();
    try
    {
        cmdoutletID.Items.Clear();
        foreach (var row in ds_OutletList.Tables[0].Rows)
            cmdoutletID.Items(new { outletid = row["outletid"], pkID = row["primaryKeyIDFieldName"] });

    }
    finally { cmdoutletID.EndUpdate(); }
}

Try this: 尝试这个:

BOStockTransfer obj_StockTransfer = new BOStockTransfer();
        DataSet ds_OutletList = obj_StockTransfer.GetOutlets(connectionString);

        if (ds_OutletList.Tables[0].Rows.Count != 0)
        {
            cmdoutletID.DataSource = ds_OutletList.Tables[0];
            cmdoutletID.DisplayMember = "outletname";
            cmdoutletID.ValueMember = "outletId";
        }

To capture selected value, for example on button click: 要捕获所选值,例如按下按钮:

protected button1_Click(object o, EventArgs e)
{
  var selectedId =  cmboutletID.SelectedValue;
MessageBox.Show(selectedId);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM