2013-01-19 38 views
0

我想做一個簡單的搜索程序,允許用戶搜索一個員工的姓名,然後單擊搜索按鈕,這將返回員工的詳細信息。簡單的搜索程序不會返回結果c#

在我的表,我有:

private void buttonSearch_Click(object sender, EventArgs e) 
    { 
     //set datasource 
     dataGridView1.DataSource = controller_emp.search_employee(textBoxSearch.Text); 
    } 

Controller_Employee:

public Model_Employee search_employee(string criteria) 
    { 
     return db.search_employee(criteria); 
    } 

Model_DB_Employee:

public Model_Employee search_employee(string criteria) 
    { 

     Model_Employee result = new Model_Employee(); 
     for (int i = 0; i < rows.Count; i++) 
     { 
      if ((string)empTab.Rows[i]["emp_fname"] == criteria) 
      { 
       result.setId(empTab.Rows[i]["emp_id"].ToString()); 
       result.setFname(empTab.Rows[i]["emp_fname"].ToString()); 
       result.setLname(empTab.Rows[i]["emp_lname"].ToString()); 
       result.setUsername(empTab.Rows[i]["username"].ToString()); 
       result.setPassword(empTab.Rows[i]["passwd"].ToString()); 
       result.setJobrole(empTab.Rows[i]["job_role"].ToString()); 
       result.setContact(empTab.Rows[i]["contact"].ToString()); 
       result.setEmail(empTab.Rows[i]["email"].ToString()); 
      } 

     } 
     return result; 

    } 

這有什麼不對的for循環?即使criteria已被滿足,它仍然保持循環。

+0

那麼,當然''條件'符合後它會保持循環。這就是代碼被寫入的目的。順便說一句,爲什麼你不在數據庫中對'criteria>進行過濾? –

+0

'if(empTab.Select(「emp_fname like'%'」)。Equals(criteria))' 你的意思是這樣嗎?對不起,我剛開始編程 – user1779026

回答

1

使用break;

後立即
for (int i = 0; i < rows.Count; i++) 
{ 
    if ((string)empTab.Rows[i]["emp_fname"] == criteria) 
    { 
     //result stuff 
     break; 
    } 
} 
return result; 
0

當您找到該員工時,您沒有退出循環。 您可以: 1.使用break與信息填充結果 2.將與信息填充後的結果return result;立即

我最喜歡的選項號1 :)

相關問題