在数据网格视图中选择并显示某些行
本文关键字:显示 选择 数据 数据网 网格 视图 | 更新日期: 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);