我正在努力完成以下任务,并感谢任何帮助。
我有一个包含2列的CSV文件,1个名称列表和另一个相关ID列表。
EG。
Test1,00001
Test2,00002
我已将这些内容读入我的程序中的2个列表。 1. nameList 2. idList
我已使用nameList的值填充了组合框的数据源。
现在,当在组合框中选择一个名称并按下一个按钮时,我想获得该ID。因此,如果选择了Test1,当按下按钮时,将返回00001,就好像选择了Test2并按下按钮一样,返回00002。
如果它有帮助,这就是我目前用来填充列表的内容。
public void nameCSV()
{
var reader = new StreamReader(File.OpenRead(@"C:\temp\nameList.csv"));
List<string> nameList = new List<string>();
List<string> idList = new List<string>();
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
nameList.Add(values[0]);
idList.Add(values[1]);
}
cmbxName.DataSource = releaseNameList;
}
答案 0 :(得分:0)
public void nameCSV()
{
var reader = new StreamReader(File.OpenRead(@"C:\temp\nameList.csv"));
DataTable tbl = new DataTable();
tbl.Columns.Add("Name", typeof(string));
tbl.Columns.Add("ID", typeof(string));
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
DataRow row = tbl.NewRow();
row["Name"]=values[0];
row["ID"] = values[1];
tbl.Rows.Add(row);
}
cmbxName.DisplayMember = "Name";
cmbxName.ValueMember = "ID";
cmbxName.DataSource = tbl;
}
你需要这样的东西。检查ComboBox的属性DisplayMember和ValueMember。
因此,当单击该按钮并且您想要取值而不是显示文本时。
protected void Button1_Click(object sender, EventArgs e)
{
string id = cmbxName.SelectedValue;
}
N.B:你的头衔有误导性!
答案 1 :(得分:0)
public void nameCSV()
{
var reader = new StreamReader(File.OpenRead(@"C:\temp\nameList.csv"));
Dictionary<string, int> userDict = new Dictionary<string, int>();
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
userDict.Add(values[0], values[1]);
}
cmbxName.DataSource = userDict;
}
调用给定用户id的值只需使用密钥即可。例如,&#39; Test1&#39;
string Username = "Test1";
int userid;
userid = userDict[Username];
需要注意的是,字典可以更好地将数值作为键,而不是字符串。在你的情况下,你要查找字符串名称,所以它应该是这样的。只要字符串长度很短 - 也就是说不超过10个字符。表现明智,你应该没事。