我是数据网格视图的新手,所以对大多数人来说,我的问题看起来非常基本。我有一个带密码的数据库表。这些密码是加密的。我有一个带有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;
}
答案 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");
}
}