[英]Combobox in C# i Need to fill two value in combo box
我的組合框的C#代碼有問題,我的代碼在這里
cmbProjectName.Items.Clear();
if (obds.Tables.Count > 0 && obds.Tables[0].Rows.Count > 0)
{
for (int iCount = 0; iCount < obds.Tables[0].Rows.Count; iCount++)
{
cmbProjectName.Items.Add(obds.Tables[0].Rows[iCount]["Project_Name"].ToString());
}
}
在組合框中有增值功能,但我將自己添加此商品的索引,以便在其他搜索中進行進一步操作,請建議我...
您可以創建一個類
private class Project
{
public int ID {get; set;}
public string Name {get; set;}
public Project (int _id, string _name)
{
ID = _id;
Name = _name
}
}
然后,您以這種方式轉換方法
List<Project> listPrj = new List<Project>();
if (obds.Tables.Count > 0 && obds.Tables[0].Rows.Count > 0)
{
for (int iCount = 0; iCount < obds.Tables[0].Rows.Count; iCount++)
{
listPrj.Add(new Project(int.Parse(obds.Tables[0].Rows[iCount]["Project_ID"].ToString()), obds.Tables[0].Rows[iCount]["Project_Name"].ToString());
}
}
cmbProjectName.DisplayMember = Name;
cmbProjectName.ValueMember = ID;
cmbProjectName.DataSource = listPrj;
JAEP的解決方案也可以應用於桌面應用程序。 請檢查有關ValueMember
MSDN頁面 。
指定DisplayMember
, ValueMember
和DataSource
,可以使用ComboBo.SelectedText
和ComboBo.SelectedValue
獲取選定的文本和選定的值。
或者,您只需要索引,就可以使用ComboBo.SelectedIndex
。
JAEP使用類的解決方案將起作用。 綁定到字典是另一種方式,這里您不必創建額外的類。 來源SO問題
根據您的情況,代碼如下所示。 將iCount替換為所需的索引。
cmbProjectName.Items.Clear();
Dictionary<int, string> projectsDictionary = new Dictionary<int, string>();
if (obds.Tables.Count > 0 && obds.Tables[0].Rows.Count > 0)
{
for (int iCount = 0; iCount < obds.Tables[0].Rows.Count; iCount++)
{
projectsDictionary.Add(iCount, obds.Tables[0].Rows[iCount]["Project_Name"].ToString());
}
}
cmbProjectName.DataSource = new BindingSource(projectsDictionary, null);
cmbProjectName.DisplayMember = "Value";
cmbProjectName.ValueMember = "Key";
檢索鍵或值的代碼。
string value = ((KeyValuePair<int, string>)cmbProjectName.SelectedItem).Value;
int key = ((KeyValuePair<int, string>)cmbProjectName.SelectedItem).Key;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.