使用数据库中的数据填充Combobox

时间:2015-05-06 05:02:07

标签: c# sql-server winforms ado.net sqlclient

我在SQL Server上有一个Windows窗体和一个名为RecordStore的数据库。我有一张CD表(称为[CD-table])我试图从这个表格中提取数据并显示。

我希望表单中有combobox显示CD专辑标题("CDname"),但我希望能够获得CD ID#("CDID" )来自Combobox.SelectedValue属性 - 我将其作为int。

目前,我不确定除非将其作为对象,否则我将如何获取这两个数据,但它只是在ProjectName.CD中显示combobox。我想访问CDID,因为我有一个DataGridView,我想用CD数据填充,我将其设置为DataTable,然后将DataTable设置为DataGridView's DataSource

获取CD数据并返回CD对象列表的方法。

private string myconnectionString = @"/*connection string*/";
public List<CD> GetCDList()
{
    List<CD> CDList = new List<CD>();
    SqlConnection myConnection;
    SqlCommand myCmd;
    SqlDataReader myReader;
    myConnection = new SqlConnection(myconnectionString);
    myCmd = new SqlCommand("SELECT CDID, CDname FROM [CD-table]", myConnection);
    try
    {
        myConnection.Open();
        myReader = myCmd.ExecuteReader();
        while (myReader.Read())
        {
            CD newCD = new CD((int)myReader["CDID"]);
            newCD.name = myReader["CDname"].ToString().Trim();
            CDList.Add(newCD);
        }
        myReader.Close();
        myConnection.Close();
    }
    finally
    {
        myConnection.Close();
    }

    return CDList;
}

CD对象(非常基本):

public class CD
{
    public string name;
    private int ID;

    public CD(int _ID)
    {
        ID = _ID;
    }
}

以及填写表单加载方法{/ 1}}的代码:

Combobox

2 个答案:

答案 0 :(得分:3)

您只需设置ValueMember和DisplayMember属性:

List<CD> myList = myDataAccess.GetCDList();
AlbumCombobox.DataSource = myList;
AlbumCombobox.DisplayMember = "Name";
AlbumCombobox.ValueMember = "ID";

CD类应定义如下:

public class CD
{
    public string Name {get; set; }
    public int ID {get; private set;}

    public CD(int _ID)
    {
        ID = _ID;
    }
}

答案 1 :(得分:0)

@jesus Lopez给出的答案是正确的。但我们需要检查valuemember字符串是否区分大小写。否则会抛出“无法绑定到新值成员”。错误。

链接:http://www.fmsinc.com/free/NewTips/NET/NETtip37.asp

List<CD> myList = myDataAccess.GetCDList();
AlbumCombobox.DataSource = myList;
AlbumCombobox.DisplayMember = "name";
AlbumCombobox.ValueMember = "ID"; // case sensitive.

干杯!