数据网格视图会更改特定列的所有值

时间:2015-02-10 13:40:21

标签: c# datagridview

我是数据网格视图的新手,所以对大多数人来说,我的问题看起来非常基本。我有一个带密码的数据库表。这些密码是加密的。我有一个带有datagridview的C#应用​​程序,它向我展示了这个表,但我看到了加密的密码,我希望看到它们被解密。

此代码使用名为Companies的数据库表填充我的数据网格(每家公司都有密码):

private void populateCompaniesDataGrid()
        {
            String sql = "SELECT * from companies";
            MySqlCommand command = new MySqlCommand(sql, dh.Connection);

            try
            {
                MySqlDataAdapter adapter = new MySqlDataAdapter();
                adapter.SelectCommand = command;
                DataTable dbdataset = new DataTable();
                adapter.Fill(dbdataset);
                BindingSource bSource = new BindingSource();

                bSource.DataSource = dbdataset;
                dataGridView1.DataSource = bSource;
                adapter.Update(dbdataset);

            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                dh.Connection.Close();
            }
        }

我有一个DataEncryptor类,它有两个方法 - Encrypt and Decrypt。

private DataEncryptor encryptor = new DataEncryptor();
public string Encrypt(string text)
    {
       //does some stuff to encrypt
        return Encrypt;
    }

    public string Decypt(string text)
    {
        //does some stuff to decrypt
        return Decrypt;
    } 

2 个答案:

答案 0 :(得分:1)

您可以添加此项并调用您的Decrypt方法。

void dataGridView1_CellFormatting(object sender,DataGridViewCellFormattingEventArgs e)
            {
                if (e.ColumnIndex == 1 && e.RowIndex != this.dataGridView1.NewRowIndex)
                {
                    e.Value = Decrypt(e.Value.ToString());
                }
            }

答案 1 :(得分:0)

也许尝试RowsAdded事件?然后在循环中添加你的代码来读取密码,调用你的解密方法并将字符串写回行。

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
    for (int i = e.RowIndex; i < e.RowCount + e.RowIndex; i++)
    {
        //not tested: 
        string password = dataGridView1.Rows[e.RowIndex].Cells["encryptedPassword"].Value.ToString()
        string decryptedPassword = DataEncryptor.Decrypt(password);

        dataGridView1.Rows[e.RowIndex].Cells["encryptedPassword"].Value = decryptedPassword;
        Console.WriteLine("Row " + i.ToString() + " added");
    }
}

gridview rowdatabound event in winforms?