1

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

所以我可以从我目前的网格/基础数据库中删除一行/记录

  1. 设置 AutoGenerateDeleteButton = true
  2. 在第一列中显示唯一记录 ID
  3. 处理 RowDeleting 事件
  4. 通过获取grid.Rows[e.RowIndex].Cells[idIndex].Text获取id
  5. 将该数字传递给执行删除的函数

这似乎工作得很好,但我宁愿不向用户显示 ID,因为他们对他们没有任何意义。

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

那么如何在每一行中存储隐藏的 ID 号呢?

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

跟进答案:

感谢您的回答,最终采用了 Eric 的 DataKeyNames 方式。对于像我一样不熟悉 ASP.NET 的其他人,我使用的步骤在哪里

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

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

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

    grid.DataKeys[e.RowIndex].Value

4

2 回答 2

3

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

于 2008-10-15T16:00:18.713 回答
0

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

否则,按照@Eric Z Beard 的建议使用 DataKeyNames 属性。

于 2008-10-15T16:02:23.250 回答