我正试图让DataGridView
显示 ONLY 输入的姓氏行。从那里我可以构建我的程序的其余部分,但我遇到了速度颠簸。我看到了Submit_Button_Click
在线活动中的代码补丁,但它不起作用。它在其他方面打破了。有什么建议?
对不起,我是新手,但如果我学会了,我会永远记得。
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;
}
}
}
}
答案 0 :(得分:0)
我建议您使用过滤而不是循环。
尝试通过以下方式替换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”应替换为您的列名。
P.S。如果您不需要精确匹配姓氏,可以使用LIKE运算符和通配符来过滤使用“包含”和“以...开头”(或“结束于”)模式。
包含文本框中的所有字符:string.Format("Field_Name LIKE '*{0}*'", lastName);
以文本框中的字符开头:string.Format("Field_Name LIKE '{0}*'", lastName);
结束于:string.Format("Field_Name LIKE '*{0}'", lastName);