我有一个数据网格,我想用它显示三列。 我使用存储过程向datagrid显示一些记录。
存储过程是:
procedure [dbo].[allKeys]
AS
select id,key,username from keys_TB
此过程中的密钥是加密的,所以需要转换它我已完成转换并保留这些密钥是ArrayList。
但问题是将剩余的id,username列绑定到datagrid,无法将ArrayList绑定到datagrid。
代码背后:
DataSet ds = clsBusinessLogic.allKeys();
dgrv_allkey.DataSource = ds.Tables[0];
dgrv_allkey.AutoGenerateColumns = false;
dgrv_allkey.Columns["id"].DataPropertyName = "id";
DataGridViewColumn id = dgrv_allkey.Columns[0];
this.dgrv_allkey.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
id.Width = 60;
dgrv_allkey.Columns["username"].DataPropertyName = "username";
DataGridViewColumn Custname = dgrv_allkey.Columns[2];
Custname.Width = 199;
this.dgrv_allkey.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
这就是我如何将id和用户名绑定到datagrid,但是没有任何关于密钥的线索。
我通过clsBusinessLogic.allKeys()方法调用了存储过程[allKeys]
答案 0 :(得分:0)
首先向网格添加数据绑定完成事件:
dgrv_allkey.DataBindingComplete += dgrv_allkey_DataBindingComplete;
然后将存储过程的结果集添加为grid datasoruce:
dgrv_allkey.DataSource = ds.Tables[0];
dgrv_allkey.Columns["id"].DataPropertyName = "id";
////and other formating what ever needed.
由于设置了数据源,事件将被触发,然后在此事件中更改每行的键单元格的值。
private void dgrv_allkey_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
// Change Column Value for the DataGridView.
foreach (DataGridViewColumn i in dataGridView1.Columns)
{
if (i.Name == "key")
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
string oldvalue = row.Cells["key"].Value as string;
if (!string.IsNullOrEmpty(oldvalue))
{
// perform decoding here and set the decoded value here..
}
}
}
}
}