在数据网格视图中选择并显示某些行

本文关键字:显示 选择 数据 数据网 网格 视图 | 更新日期: 2023-09-27 18:30:27

我试图让DataGridView显示输入的姓氏的行。从那里我可以构建程序的其余部分,但我遇到了减速带。我在网上看到了我Submit_Button_Click活动中的那段代码,但它不起作用。它在 else 支架处断裂。有什么建议吗?对不起,我是新手,但如果我学会一次,我会永远记住。

public partial class Form1 : Form
{
    string LastName;
    //string FirstName;
    public Form1()
    {
        InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        this.aRMORERS_TableAdapter.Fill(this.armorersDataSet._ARMORERS_);
    }
    private void Submit_Button_Click(object sender, EventArgs e)
    {
        LastName = LastName_TextBox.Text;
        //FirstName = FirstName_TextBox.Text;
        for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
        {
            if (dataGridView1.Rows[i].Cells[0].Value.ToString() == LastName)
            {
                dataGridView1.Rows[i].Selected = true;
                dataGridView1.Rows[i].Visible = true;
            }
            else
            {
                dataGridView1.Rows[i].Visible = false;
                dataGridView1.Rows[i].Selected = false;
            }
        }
    }
}

在数据网格视图中选择并显示某些行

我建议你使用过滤而不是循环。

尝试通过以下方式替换 Submit_Button_Click 事件处理程序中的代码:

    private void Submit_Button_Click(object sender, EventArgs e)
    {
        string lastName = LastName_TextBox.Text;
        (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = 
             string.Format("Field_Name = '{0}'", lastName);
    }

其中"Field_Name"应替换为您的列名称。

附言如果不需要姓氏的精确匹配,则可以使用带有通配符的 LIKE 运算符,以使用模式"包含"和"开头为"(或"结尾为")进行过滤。

包含文本框中的所有字符:string.Format("Field_Name LIKE '*{0}*'", lastName);

以文本框中的字符开头:string.Format("Field_Name LIKE '{0}*'", lastName);

结尾为:string.Format("Field_Name LIKE '*{0}'", lastName);