2014-03-03 33 views
0

我在勝利表單上有4個文本框。 [名字,姓氏,工作,描述。]在Win Form中執行搜索/查找

我有一張桌子。

我有數據集和數據表配置,我可以導航記錄。

我想知道如何根據名字進行搜索,從數據集/表中獲取數據並根據文本框中的內容顯示信息。

我怎麼做到這一點,例如,獲得該行, 「公司」,其中

  txtFirstName = ds.Tables[0].Column[1] 

然後我就可以:

  DataRow row = ds.Tables[0].Rows[inc]; 

      txtFirstName.Text = row[1]; 
      txtSurname.Text = row[2]; 
      txtJobTitle.Text = row[3]; 
      txtDepartment.Text = row[4]; 

對不起,找到了解決辦法。

首先,我創建了返回的行的搜索方法...

私人詮釋first_name_search(字符串FNAME) {

  for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 
      { 
       if ((string)ds.Tables[0].Rows[i]["first_name"] == fname) 
       { 
        send = i; 
        //result stuff 
        break; 
       } 
      } 
      // return result; 
      return send; 
     } 

我用搜索按鈕點擊方法這個方法和顯示數據...

回答

0

在函數返回一個字符串[]:

 string[number_of_infos] infos = null; 
     connection = new SqlConnection(connectionString); 
     connection.Open(); 
     cmd = new SqlCommand(); 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText = "SELECT * FROM your_table WHERE first_name = " + your_first_name; 
     cmd.Connection = connection; 
     rdr = cmd.ExecuteReader(); 
     if(rdr.Read()) 
     { 
      infos[0] = rdr["Surname"].ToString(); 
      infos[1] = rdr["JobTitle"].ToString(); 
      infos[2] = rdr["Department"].ToString(); 
     } 
     cmd.Dispose(); 
     connection.Close(); 
     return infos; 

直接在您的形式:

 connection = new SqlConnection(connectionString); 
     connection.Open(); 
     cmd = new SqlCommand(); 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText = "SELECT * FROM your_table WHERE first_name = " + your_first_name; 
     cmd.Connection = connection; 
     rdr = cmd.ExecuteReader(); 
     if(rdr.Read()) 
     { 
      txtSurname.Text = rdr["Surname"].ToString(); 
      txtJobTitle.Text = rdr["JobTitle"].ToString(); 
      txtDepartment.Text = rdr["Department"].ToString(); 
     } 
     cmd.Dispose(); 
     connection.Close(); 
     return infos; 

否則,如果你想獲得行信息:

foreach(DataGridViewRow row in your_DGV.Rows) 
    if(row["FirstName"].Value.ToString() == txtFirstName.Text) 
    { 
     txtSurname.Text = row["Surname"].Value.ToString(); 
     txtJobTitle.Text = row["JobTitle"].Value.ToString(); 
     txtDepartment.Text = row["Department"].Value.ToString(); 
     break; 
    } 
0

僅供參考,您可以使用LINQ擴展做到這一點:

var tbl = ds.Tables[0].AsEnumerable(); 
return tbl.Where(p => p["first_name"] == fname).FirstOrDefault(); 

編輯:從數據表中選擇的所有匹配行:

var results = from row in tbl.AsEnumerable() 
       where row["first_name"] == fname 
       select row;