.net - 即使设置了 GridView.DataKeyNames,Gridview.DataKeys[] 仍然为空

标签 .net asp.net

GridView.DataKeynames 存储 GridView 控件中显示的项目的主键字段的名称。

1) 即使我设置了 DataKeyNames,GridView 仍然不会在 DataKey 对象中存储记录的主键值:


protected void SqlDataSource1_Selected(object sender, 
          SqlDataSourceStatusEventArgs e)
{
      Label2.Text = GridView2.DataKeys[0].Value.ToString();//exception
}

为什么不呢?

2) 我假设当设置 DataKeyNames 时,DataKey 对象存储主键的原始值和新值(假设我们发出更新命令),并且当更新完成时,DataKey 对象会丢弃原始值?

谢谢

最佳答案

我想这已经太晚了...但首先,您尝试在数据检索之后而不是在数据绑定(bind)之后立即获取数据 key 。在 DataBind 之前,DataKey 不会被填充。

其次,数据键不存储新的更新后值。它们是绑定(bind)期间可用内容的副本,存储在 View 状态中,主要用于在回发后定位记录而不进行另一次绑定(bind)。

关于.net - 即使设置了 GridView.DataKeyNames,Gridview.DataKeys[] 仍然为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/632689/

相关文章:

.net - 通过powershell在iis中限制IP地址和域

c# - 从另一个 View 返回数据 Xamarin.iOS

c# - Dapper.NET 连接/查询最佳实践

c# - 如果 ASP.NET MVC Web 应用程序要托管在 DMZ 中且无法直接访问数据库(tcp 端口 1433 被防火墙阻止),如何设计层级?

c# - 如何在ASP.NET开发的Azure Web App上获取客户端的IP地址?

c# - 覆盖第三方库的私有(private)方法

c# - WPF 组合框阻止选择更新

c# - 对 WCF 调用进行单元测试,是否可能以及如何进行?

c# - 异步等待按钮单击始终同步运行

asp.net - 如何使用 GridView 中的控件在 ModalPopupExtender 中设置 TargetControlID