asp.net,Gridview RowEditing事件仅适用于第一行

时间:2012-09-17 19:17:27

标签: c# asp.net

我正在使用c#在asp.net上工作。 我有一个带有templatefield列的gridview,数据来自一个sql数据库。我在项目模板上有linkbutton,linkbutton调用Rowediting事件以启用编辑。这在第一行工作正常。但当我点击任何其他行没有任何反应时,事件永远不会发生。

我该如何解决这个问题?

谢谢..

1 个答案:

答案 0 :(得分:3)

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

每次回发都会发生Page_Load事件 - 每次点击按钮,或任何触发回发的事件。

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

  1. 将您的数据绑定代码移至Page_Init
  2. 将您的数据绑定放在Page_Load的if(!Page.IsPostback)块中。
  3. 实质上,问题是您的页面在第一次加载时是数据绑定的。 然后编辑事件由一些客户端操作触发,触发回发。在此回发中,Page_Load首先触发,重新绑定GridView,删除在先前加载时与其关联的所有数据。因此,当RowEditing事件触发时(控制事件总是发生在Page_Load之后),没有什么可以做的。在回发之前存在的所有数据引用都已消失。

    如果您移动绑定代码也是Page_Init,您可以解决此问题,因为页面将被绑定,然后将重新应用所有Viewstate,恢复场景中回发中丢失的数据上方。