[英]Select and display certain rows in DataGridView
我試圖讓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”應替換為您的列名。
PS如果不需要姓氏的精確匹配,則可以將LIKE運算符與通配符一起使用,以使用模式“包含”和“開頭為”(或“結尾為”)進行過濾。
包含文本框中的所有字符: string.Format("Field_Name LIKE '*{0}*'", lastName);
以文本框中的字符string.Format("Field_Name LIKE '{0}*'", lastName);
: string.Format("Field_Name LIKE '{0}*'", lastName);
結尾為: string.Format("Field_Name LIKE '*{0}'", lastName);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.