c#Listview使用文本框搜索

时间:2015-06-16 05:04:54

标签: c# mysql database listview search

我有一个c#窗体,可以将ID, Name,Birthday保存到我的Employee表中。我使用这些代码使用Save Button

在表格中保存数据
private void Save_Click_1(object sender, EventArgs e)
    {
        try
        {
            MainDatabaseDataSetTableAdapters.EmployeeTableAdapter employee = new MainDatabaseDataSetTableAdapters.EmployeeTableAdapter();
            employee.InsertQuery(textBox1.Text.Trim(),
                textBox2.Text.Trim(),
                textBox3.Text.Trim());


            MessageBox.Show("Saved");

        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

使用此查询:

  

INSERT INTO员工                            (身份证,姓名,生日)价值(@ ID,@姓名,@生日)

我使用Populate Button使用此代码将我保存的数据从我的数据库显示到Listview

private void Populate_Click(object sender, EventArgs e)
    {
        listView1.Items.Clear();

        DataTable dtable = mainDatabaseDataSet.Tables["Employee"];

        for (int i = 0; i < dtable.Rows.Count; i++)
        {
            DataRow drow = dtable.Rows[i];

            if (drow.RowState != DataRowState.Deleted)
            {
                ListViewItem item = new ListViewItem(drow["ID"].ToString());
                item.SubItems.Add(drow["Name"].ToString());
                item.SubItems.Add(drow["Birthday"].ToString());

                listView1.Items.Add(item);
            }
        }

所以我现在的问题是,我对如何使用listviewtextbox SearchButton进行搜索没有任何想法。

我有SearchQuery

  

SELECT ID,Name,Employ FROM Employee WHERE
  (Name = @Name)

我想我可以在SearchButton插入此内容,但我不知道如何。

请有人帮忙。

在我使用此代码填充列表视图之前

 DataTable dtable = mainDatabaseDataSet.Tables["Employee"];

我使用此代码进行搜索,但它确实有用。我使用此代码设置数据库连接:

 public SqlCeConnection connection = new SqlCeConnection(@"Data Source = C:\...\...\...");

然后我将此代码插入SearchButton

 private void button2_Click(object sender, EventArgs e)
    {


        SqlCeCommand search = new SqlCeCommand("SELECT * FROM Employee Where Name like '%" + Search.Text + "%'", connection);


        try
        {
            SqlDataReader datareader = search.ExecuteReader();


            while (datareader.Read())
            {
                ListViewItem item = new ListViewItem(datareader["ID"].ToString());
                item.SubItems.Add(datareader["Name"].ToString());
                item.SubItems.Add(datareader["Birthday"].ToString());


                listView1.Items.Add(item);
            }
        }


        catch (SqlException ex)
        {
            MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

但这不是我老师想要的。他希望看到我如何使用此代码填充Listview

进行搜索
DataTable dtable = mainDatabaseDataSet.Tables["Employee"];

我知道有人可以就如何做到这一点有一个想法。请帮帮我。

3 个答案:

答案 0 :(得分:0)

您还可以过滤数据行。参阅

https://msdn.microsoft.com/en-us/library/way3dy9w(v=vs.110).aspx

喜欢dtable.Select(Name = textbox1.text);

答案 1 :(得分:0)

您可以在SearchButton点击处理程序中设置dtable.DefaultView.RowFilter属性,并在DataTable.DefaultView方法中迭代Populate_Click而不是表格行。

答案 2 :(得分:0)

我自己解决了这个问题。 谢谢你浏览我的问题。这是我使用的代码

 public MainDatabaseDataSet.EmployeeDataTable getData(string data)
    {
        MainDatabaseDataSetTableAdapters.EmployeeTableAdapter returnEmployee = new MainDatabaseDataSetTableAdapters.EmployeeTableAdapter();
        return returnEmployee.GetDataByName(this.textBox4.Text.Trim());
    }

    private void Search_Click(object sender, EventArgs e)
    {
        listView1.Items.Clear();

        try
        {

            MainDatabaseDataSet.EmployeeDataTable GetName = getData(this.Search.Text);
            MainDatabaseDataSet.EmployeeRow GetName2 = (MainDatabaseDataSet.EmployeeRow)GetName.Rows[0];


            for (int i = 0; i < GetName.Rows.Count; i++)
            {
                DataRow drow = GetName.Rows[i];

                if (drow.RowState != DataRowState.Deleted)
                {
                    ListViewItem item = new ListViewItem(drow["ID"].ToString());
                    item.SubItems.Add(drow["Name"].ToString());
                    item.SubItems.Add(drow["Birthday"].ToString());

                    listView1.Items.Add(item);
                }


            }
        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
        }


    }