0

入力された姓の行のみDataGridViewを表示するようにしようとしています。そこから残りのプログラムをビルドできますが、スピードバンプにぶつかります。私のイベントにあるコードのパッチをオンラインで見ましたが、機能しません。それはelseブラケットで壊れます。何かアドバイス?申し訳ありませんが、私はこれに慣れていませんが、一度学べば永遠に覚えています。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;
            }
        }
    }
}
4

1 に答える 1

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」は、列名に置き換える必要があります。

PS 姓を完全に一致させる必要がない場合は、ワイルドカード文字を含む LIKE 演算子を使用して、パターン「含む」および「始まる」(または「で終わる」) を使用してフィルタリングできます。

テキストボックス内のすべての文字が含まれています:string.Format("Field_Name LIKE '*{0}*'", lastName);

テキストボックス内の文字で始まる:string.Format("Field_Name LIKE '{0}*'", lastName);

で終わる:string.Format("Field_Name LIKE '*{0}'", lastName);

于 2013-09-05T14:42:46.040 に答える