2011-02-06 60 views
0

我有一个项目经理姓名下拉列表和一个带有小组成员姓名的复选框列表。我想要做的是将从下拉列表和复选框列表中选择的ID写入数据库。我正在使用以下代码,但只有复选框列表中的ID存储在表中。我能做些什么来同时从下拉列表中存储ID?谢谢你的帮助。将ID写入数据库的问题

for (int i = 0; i < project_members.Items.Count; i++) 
{ 

      if (project_members.Items[i].Selected) 
      { 


       SqlParameter[] param = new SqlParameter[1]; 
       param[0] = new SqlParameter("@member_id", SqlDbType.Int); 
       param[0].Value = project_manager.SelectedValue; 
       param[0].Value = project_members.Items[i].Value; 


       for (int j = 0; j < param.Length; j++) 
       { 
        cmd2.Parameters.Add(param[j]); 
       } 

       cmd2.CommandType = CommandType.Text; 
       cmd2.ExecuteNonQuery(); 
       cmd2.Parameters.Clear(); 

      } 
} 
+0

为什么设置`param [0] .Value`两次? “project_manager.SelectedValue”的值基本上被忽略了...... – hangy 2011-02-06 15:57:34

+0

项目经理和团队成员之间是否存在一对多关系?您能否向我们展示数据库的结构 – 2011-02-06 16:06:54

+0

是的,存在一对多关系 - 这就是为什么我使用项目经理选择和复选框列表来选择团队成员。 – MiziaQ 2011-02-06 16:10:05

回答

0

覆盖其分配param[0]你不应该创建新的参数,每次循环。

SqlParameter managerParameter = new SqlParameter("@manager_id", SqlDbType.Int); 
cmd2.Parameters.Add(managerParameter); 
managerParameter.Value = project_manager.SelectedValue; 

SqlParameter memberParameter = new SqlParameter("@member_id", SqlDbType.Int); 
cmd2.Parameters.Add(memberParameter); 

cmd2.CommandType = CommandType.Text; 

// For better performance in the loop, you could prepare the query: 
cmd2.Prepare(); 
for (int i = 0; i < project_members.Items.Count; ++i) 
{ 
    if (project_members.Items[i].Selected) 
    { 
     memberParameter = project_members.Items[i].Value; 
     cmd2.ExecuteNonQuery(); 
    } 
} 

请注意,我认为所选择的mananger扮演的角色不同于“正常”成员。如果经理应该像任何成员一样处理,请尝试:

SqlParameter memberParameter = new SqlParameter("@member_id", SqlDbType.Int); 
cmd2.Parameters.Add(memberParameter); 

cmd2.CommandType = CommandType.Text; 

// For better performance in the loop, you could prepare the query: 
cmd2.Prepare(); 

memberParameter.Value = project_manager.SelectedValue; 
cmd2.ExecuteNonQuery(); 

for (int i = 0; i < project_members.Items.Count; ++i) 
{ 
    if (project_members.Items[i].Selected) 
    { 
     memberParameter = project_members.Items[i].Value; 
     cmd2.ExecuteNonQuery(); 
    } 
} 
1

这个问题似乎是与这些行:

param[0] = new SqlParameter("@member_id", SqlDbType.Int); 
param[0].Value = project_manager.SelectedValue; 
param[0].Value = project_members.Items[i].Value; 

你与project_manager.SelectedValue;则您与project_members.Items[i].Value;