1

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));
}  

次の 2 つのエラー メッセージが表示されます。

'System.Web.UI.WebControls.ListItem.ListItem(string, string)' に無効な引数があります

Argument 1: cannot convert from 'string[]' to 'string'  

問題は何ですか?

4

2 に答える 2

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));
}
于 2012-10-15T21:19:16.860 に答える
0

配列は常に同じ長さで、1 対 1 (名前と 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ました。

于 2012-10-15T21:22:36.250 に答える