如何使用不可见数据从GridView中删除行?

时间:2008-10-15 15:54:30

标签: c# asp.net asp.net-2.0

我正在使用通过函数填充的GridView编写一个简单的原型前端,而不是直接链接到SqlServer数据源。

所以我可以从目前

的网格/底层数据库中删除一行/记录
  1. 设置AutoGenerateDeleteButton = true
  2. 在第一列中显示唯一记录ID
  3. 处理RowDeleting事件
  4. 通过获取grid获取id。行[e.RowIndex] .Cells [idIndex] .Text
  5. 将该号码传递给执行删除的功能
  6. 这似乎工作正常,但我不想向用户显示ID,因为它们对他们没有任何意义。

    我尝试将id列的Visible属性设置为false,但这导致上面的第4步返回一个空字符串 - 因此没有删除任何记录。

    那么如何在每一行存储hidded id号?

    或者我是否完全以错误的方式解决这个问题?

    跟进答案:

    感谢你们的回答,最终走向了Eric的DataKeyNames方式。对于像我一样刚接触ASP.NET的其他人,我使用的步骤

    • 在我设置网格DataSource并调用DataBind()的行之间,我添加了

      grid.DataKeyNames = new string[] {"id"};

    • 然后在处理RowDeleting的函数中,我使用

      获取了我的id

      grid.DataKeys[e.RowIndex].Value

2 个答案:

答案 0 :(得分:3)

GridView具有DataKeyNames属性。将数据源绑定到网格时,可以设置DataKeyNames(通常只有一个名称,即PK字段)。你没有显示PK,但你可以从代码隐藏中获得它。

答案 1 :(得分:0)

Visible = false表示不在页面上呈现。你想要的是要么使它成为模板字段并使用HiddenField来保存值或将控件上的样式设置为“display:none;”。如果客户端代码需要访问Ajax调用的值,那就是这种情况。

否则使用DataKeyNames属性为@Eric Z Beard建议。