1

我正在使用 c# 在 asp.net 上工作。我有一个带有模板字段列的网格视图,数据来自一个 sql 数据库。我在项目模板上有链接按钮,链接按钮调用 Rowediting 事件来启用编辑。这在第一行工作正常。但是,当我单击任何其他行时,什么也没有发生,该事件永远不会触发。

我该如何解决这个问题?

谢谢..

4

1 回答 1

3

您很可能在 Page_Load 事件中对网格进行数据绑定。如果是这种情况,ASP.NET 页面生命周期就会妨碍您。(请务必阅读提供的链接中的文章。每个 .NET 开发人员都需要了解 Page_Lifecycle。它解释了许多否则会导致混淆的行为,例如这种行为。)

Page_Load 事件在每次回发时发生——每次按钮点击,或任何触发回发的事件。

如果是这种情况,有两种可能的选择:

  1. 将数据绑定代码移动到 Page_Init
  2. 将您的数据绑定放在 Page_Loadif(!Page.IsPostback)块内。

本质上,问题在于您的页面在第一次加载时是数据绑定的。然后编辑事件由一些客户端操作触发,这会触发回发。在这个回发中,Page_Load 首先触发,它重新绑定 GridView,擦除之前加载时与其关联的所有数据。因此,当 RowEditing 事件触发时(控制事件总是在 Page_Load 之后发生),它没有什么可做的。对回发之前存在的数据的所有引用都消失了。

如果你也移动你的绑定代码Page_Init,你可以绕过这个,因为页面将被绑定,然后所有的Viewstate将被重新应用到它,恢复在上面的场景中回发中丢失的数据。

于 2012-09-17T19:20:42.657 回答