我正在尝试将项目和值添加到asp.net下拉列表控件中。
arrEmpName = HttpContext.Current.Session["EmployeeName"].ToString();
arrEmpID = HttpContext.Current.Session["EmpID"].ToString();
char[] separator = new char[] { ',' };
string[] sEmployeeName = arrEmployeeName.Split(separator);
string[] sEmpID = arrEmpID.Split(separator);
foreach (string s in sEmployeeName)
{
ddlEmp.Items.Add(new ListItem(sEmployeeName, sEmpID));
}
我收到两条错误消息:
'System.Web.UI.WebControls.ListItem.ListItem(string,string)'有一些 无效的参数
和
Argument 1: cannot convert from 'string[]' to 'string'
任何想法会出现什么问题?
答案 0 :(得分:4)
您正在尝试将数组作为一个整体添加到ListItem值。我怀疑他们应该联系起来:
string[] sEmployeeName = arrEmployeeName.Split(separator);
string[] sEmpID = arrEmpID.Split(separator);
for (int i = 0; i < sEmployeeName.Length; i++)
{
ddlEmp.Items.Add(new ListItem(sEmployeeName[i], sEmpID[i]));
}
您可能还需要考虑检查它们的长度是否相同:
if (sEmployeeName.Length != sEmpID.Length)
throw new Exception("Number of employee names does not match the number of IDs!");
编辑:如果你想要的话,可以投入一些Linq但不是真的有必要:
var employees = Enumerable.Zip(arrEmployeeName.Split(separator), arrEmpID.Split(separator), (name, id) => new { Name = name, ID = id } );
foreach(var employee in employees)
{
ddlEmp.Items.Add(new ListItem(employee.Name, employee.ID));
}
答案 1 :(得分:0)
假设您的数组总是等长并且一对一匹配(在名称和ID之间):
for (int i = 0; i < sEmployeeName.Length; ++i)
{
var employeeName = sEmployeeName[i];
var employeeId = sEmpID[i];
ddlEmp.Items.Add(new ListItem(employeeName, employeeId));
}
您正在发送arrays
。