2011-02-06 62 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;