用数据库中的数据填充组合框
Fill Combobox with Data from Database
我在 SQL 服务器上有一个 Windows 表单和一个数据库,名为 RecordStore
。我有一张 table 的 CD(称为 [CD-table]
),我正在尝试从中提取数据并以这种形式显示。
我想让表单有一个显示 CD 专辑标题的 combobox
("CDname"
),但我希望能够获得 CD ID # ("CDID"
) 来自 Combobox.SelectedValue
属性 - 我会将其转换为 int.
目前,我不确定如何获取这两条数据,除非我把它变成 object,但它只是在 combobox
中显示 ProjectName.CD
.我想访问 CDID,因为我有一个 DataGridView
,我只想用 CD 数据填充,我将其设置为数据表,然后将 DataTable
设置为 DataGridView's
数据源
获取 CD 数据并返回 CD objects 列表的方法。
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 object(非常基础):
public class CD
{
public string name;
private int ID;
public CD(int _ID)
{
ID = _ID;
}
}
和表单加载方法上填写Combobox
的代码:
List<CD> myList = myDataAccess.GetCDList();
AlbumCombobox.DataSource = myList;
您只需设置 ValueMember 和 DisplayMember 属性:
List<CD> myList = myDataAccess.GetCDList();
AlbumCombobox.DataSource = myList;
AlbumCombobox.DisplayMember = "Name";
AlbumCombobox.ValueMember = "ID";
CDclass应该定义如下:
public class CD
{
public string Name {get; set; }
public int ID {get; private set;}
public CD(int _ID)
{
ID = _ID;
}
}
@jesus Lopez 给出的答案是正确的。但是我们需要检查 valuemember 字符串是否区分大小写。否则会抛出 "Could not bind to the new value member." 错误。
Link: 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.
干杯!
我在 SQL 服务器上有一个 Windows 表单和一个数据库,名为 RecordStore
。我有一张 table 的 CD(称为 [CD-table]
),我正在尝试从中提取数据并以这种形式显示。
我想让表单有一个显示 CD 专辑标题的 combobox
("CDname"
),但我希望能够获得 CD ID # ("CDID"
) 来自 Combobox.SelectedValue
属性 - 我会将其转换为 int.
目前,我不确定如何获取这两条数据,除非我把它变成 object,但它只是在 combobox
中显示 ProjectName.CD
.我想访问 CDID,因为我有一个 DataGridView
,我只想用 CD 数据填充,我将其设置为数据表,然后将 DataTable
设置为 DataGridView's
数据源
获取 CD 数据并返回 CD objects 列表的方法。
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 object(非常基础):
public class CD
{
public string name;
private int ID;
public CD(int _ID)
{
ID = _ID;
}
}
和表单加载方法上填写Combobox
的代码:
List<CD> myList = myDataAccess.GetCDList();
AlbumCombobox.DataSource = myList;
您只需设置 ValueMember 和 DisplayMember 属性:
List<CD> myList = myDataAccess.GetCDList();
AlbumCombobox.DataSource = myList;
AlbumCombobox.DisplayMember = "Name";
AlbumCombobox.ValueMember = "ID";
CDclass应该定义如下:
public class CD
{
public string Name {get; set; }
public int ID {get; private set;}
public CD(int _ID)
{
ID = _ID;
}
}
@jesus Lopez 给出的答案是正确的。但是我们需要检查 valuemember 字符串是否区分大小写。否则会抛出 "Could not bind to the new value member." 错误。
Link: 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.
干杯!