2

私は書いて、DataGridViewプログラムで埋めなければなりません。ユーザーがキーなどの単語を検索し、それを含むセル (キーワードなど) がある場合は、すべてのキーワードまたはセルでも行でもなく、検索された単語キーをキーワードで強調表示するだけです。を埋めるためのコードは次のDataGridViewとおりです。

        private void Fill()
    {
        try
        {
            if (dataGridView1 != null)
            {
                dataGridView1.ColumnCount = 11;
                dataGridView1.Columns[0].HeaderText = Resources.Form1_Fill_ID;
                dataGridView1.Columns[1].HeaderText = Resources.Form1_Fill_Family;
                dataGridView1.Columns[2].HeaderText = Resources.Form1_Fill_Cellphone;
                dataGridView1.Columns[3].HeaderText = Resources.Form1_Fill_Phone1;
                dataGridView1.Columns[4].HeaderText = Resources.Form1_Fill_Phone2;
                dataGridView1.Columns[5].HeaderText = Resources.Form1_Fill_Phone3;
                dataGridView1.Columns[6].HeaderText = Resources.Form1_Fill_Fax;
                dataGridView1.Columns[7].HeaderText = Resources.Form1_Fill_CompanyName;
                dataGridView1.Columns[8].HeaderText = Resources.Form1_Fill_Agency;
                dataGridView1.Columns[9].HeaderText = Resources.Form1_Fill_Brands;
                dataGridView1.Columns[10].HeaderText = Resources.Form1_Fill_Address;

                dataGridView1.Columns[0].Name = Resources.Form1_Fill_ID;
                dataGridView1.Columns[1].Name = Resources.Form1_Fill_Family;
                dataGridView1.Columns[2].Name = Resources.Form1_Fill_Cellphone;
                dataGridView1.Columns[3].Name = Resources.Form1_Fill_Phone1;
                dataGridView1.Columns[4].Name = Resources.Form1_Fill_Phone2;
                dataGridView1.Columns[5].Name = Resources.Form1_Fill_Phone3;
                dataGridView1.Columns[6].Name = Resources.Form1_Fill_Fax;
                dataGridView1.Columns[7].Name = Resources.Form1_Fill_CompanyName;
                dataGridView1.Columns[8].Name = Resources.Form1_Fill_Agency;
                dataGridView1.Columns[9].Name = Resources.Form1_Fill_Brands;
                dataGridView1.Columns[10].Name = Resources.Form1_Fill_Address;
            }

            _conn.ConnectionString = _connectionString;
            var cmd = new OleDbCommand("Select * from contacts ", _conn);
            _conn.Open();
            OleDbDataReader reader = cmd.ExecuteReader();

            int i = 0;
            while (reader != null && reader.Read())
            {
                if (dataGridView1 != null)
                {
                    dataGridView1.Rows.Add(1);
                }
                if (dataGridView1 != null)
                {
                    var row = dataGridView1.Rows[i];

                    row.Cells[Resources.Form1_Fill_ID].Value = reader[0].ToString();
                    row.Cells[Resources.Form1_Fill_Family].Value = reader[1].ToString();
                    row.Cells[Resources.Form1_Fill_Cellphone].Value = reader[2].ToString();
                    row.Cells[Resources.Form1_Fill_Phone1].Value = reader[3].ToString();
                    row.Cells[Resources.Form1_Fill_Phone2].Value = reader[4].ToString();
                    row.Cells[Resources.Form1_Fill_Phone3].Value = reader[5].ToString();
                    row.Cells[Resources.Form1_Fill_Fax].Value = reader[6].ToString();
                    row.Cells[Resources.Form1_Fill_CompanyName].Value = reader[7].ToString();
                    row.Cells[Resources.Form1_Fill_Agency].Value = reader[8].ToString();
                    row.Cells[Resources.Form1_Fill_Brands].Value = reader[9].ToString();
                    row.Cells[Resources.Form1_Fill_Address].Value = reader[10].ToString();

                }
                i++;
            }

        }
        catch (Exception ex)
        {
            return;
        }
        finally
        {
            _conn.Close();
        }
    }

これが検索コードです

        private void searchBtn_Click(object sender, EventArgs e)
    {
        // Code to search the  alphanumneric Part Number (in Column1 header called "PART NUMBER") and highlihgt the row
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {

            try
            {

                if (row.Cells[0].Value.ToString().Contains(searchTxt.Text))
                    //row.Cells[0].Style.ForeColor = Color.Red;
                {
                    var t = row.Cells[0].Value.ToString();

                }
                if (row.Cells[1].Value.ToString().Contains(searchTxt.Text))
                        row.Cells[1].Style.ForeColor = Color.Red;
                if (row.Cells[2].Value.ToString().Contains(searchTxt.Text))
                    row.Cells[2].Style.ForeColor = Color.Red;
                if (row.Cells[3].Value.ToString().Contains(searchTxt.Text))
                    row.Cells[3].Style.ForeColor = Color.Red;
                if (row.Cells[4].Value.ToString().Contains(searchTxt.Text))
                    row.Cells[4].Style.ForeColor = Color.Red;
                if (row.Cells[5].Value.ToString().Contains(searchTxt.Text))
                    row.Cells[5].Style.ForeColor = Color.Red;
                if (row.Cells[6].Value.ToString().Contains(searchTxt.Text))
                    row.Cells[6].Style.ForeColor = Color.Red;
                if (row.Cells[7].Value.ToString().Contains(searchTxt.Text))
                    row.Cells[7].Style.ForeColor = Color.Red;
                if (row.Cells[8].Value.ToString().Contains(searchTxt.Text))
                    row.Cells[8].Style.ForeColor = Color.Red;
                if (row.Cells[9].Value.ToString().Contains(searchTxt.Text))
                    row.Cells[9].Style.ForeColor = Color.Red;
                if (row.Cells[10].Value.ToString().Contains(searchTxt.Text))
                    row.Cells[10].Style.ForeColor = Color.Red;
            }
            catch (Exception)
            {
                return;
            }
        }
    }
4

2 に答える 2

0

この検索がクライアント側で読み込まれたデータのみに依存している場合は、ブラウザの検索機能を使用することを顧客に提案してみませんか。

それでもこの機能を顧客に提供する必要がある場合は、なぜこのタスクを実行するためにサーバー側のコードを使用するのですか?これはjavascriptで処理できます。以下は、javascriptでdatagridviewにアクセスする方法を説明するリンクの例です。

  1. http://www.netomatix.com/development/gridviewclientsideaccess.aspx

  2. http://www.thescarms.com/dotnet/webdatagrid.aspx

于 2012-12-25T08:46:14.923 に答える
0

標準の .NET コントロールでは不可能です。HTML フォーマットを使用してテキストの一部のみを強調表示できるTelerik winform スイートなどを試すことができます。

本当に必要DataGridViewですか?データのみを表示するために使用する場合は、WebBrowserコントロールを使用して、そこに html テーブルを描画することもできます。

検索コードもリファクタリングする必要があります。

for(int i=0; i<11; i++)
{
   if (row.Cells[i].Value.ToString().Contains(searchTxt.Text))
     row.Cells[i].Style.ForeColor = Color.Red;
}
于 2012-12-25T09:14:11.143 に答える