我在SQL Server上有一个Windows表单和一个数据库,称为RecordStore
。我有一个CD表(称为[CD-table]
),我正在尝试从此形式中获取数据并显示。
我想让表单具有显示CD专辑标题("CDname"
)的combobox
,但我希望能够从Combobox.SelectedValue
属性中获取CD ID#("CDID"
)int。
当前,我不确定如何将这两个数据输入,除非将其归入对象,否则它只是在combobox
中显示ProjectName.CD
。我想访问CDID,因为我有一个DataGridView
,我只想用CD数据填充,该数据将其设置为数据表,然后将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;
}
}
和在表单加载方法上填充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";
CD类应定义如下:
public class CD
{
public string Name {get; set; }
public int ID {get; private set;}
public CD(int _ID)
{
ID = _ID;
}
}
@Jesus Lopez给出的答案是正确的。但是,我们需要检查值敏感的估值字符串是否敏感。否则,它将投掷"无法绑定到新价值成员"。错误。
链接: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.
欢呼!。