gpt4 book ai didi

c# - 将单个数据网格与两个不同的数据源(存储过程输出和 ArrayList)绑定(bind)

转载 作者:太空宇宙 更新时间:2023-11-03 15:40:09 25 4
gpt4 key购买 nike

我有一个数据网格,我想使用它来显示三列。我使用存储过程将一些记录显示到数据网格中。

存储过程是:

procedure [dbo].[allKeys]
AS
select id,key,username from keys_TB

这个过程中的 key 是加密的,所以需要转换它我已经完成了转换并保留了那些 key 是 ArrayList。

但问题是将剩余的 id、username 列绑定(bind)到数据网格,无法将 ArrayList 绑定(bind)到数据网格。

代码隐藏:

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 和用户名绑定(bind)到数据网格但对 key 没有任何线索的方式。

并且我已经通过 clsBusinessLogic.allKeys() 方法调用了存储过程 [allKeys]

最佳答案

首先向网格添加一个数据绑定(bind)完成事件:

dgrv_allkey.DataBindingComplete += dgrv_allkey_DataBindingComplete;

然后添加存储过程的结果集作为网格数据源:

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..
}
}
}
}
}

关于c# - 将单个数据网格与两个不同的数据源(存储过程输出和 ArrayList)绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30523390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com