在Win Form中实现搜索/查找

时间:2014-03-03 21:21:27

标签: c# .net winforms

我在胜利表格上有4个文本框。 [名字,姓氏,工作,描述。]

我有一张桌子。

我配置了数据集和数据表,我可以浏览记录。

我想知道如何根据名字进行搜索,从数据集/表中获取数据,并根据文本框中的内容显示信息。

我该如何做到这一点,获取行,“inc”所在的

            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];

抱歉,找到了解决方案。

首先我创建了一个返回行...

的搜索方法

private int first_name_search(string 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;
        }

我在搜索按钮单击方法中使用了此方法并显示了数据...

2 个答案:

答案 0 :(得分:0)

仅供参考,您可以使用LINQ扩展来执行此操作:

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

编辑:从DataTable中选择所有匹配的行:

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

答案 1 :(得分: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;
    }