2012-09-17 25 views
1

我正在使用c#编写asp.net。 我有一个与templatefield列gridview,数据来自一个SQL数据库。我在项目模板上有linkbutton,linkbutton调用Rowediting事件来启用编辑。这在第一行工作正常。但是当我点击任何其他行时,什么也没有发生,事件永远不会引发火灾。asp.net,Gridview RowEditing事件只适用于第一行

我该如何解决这个问题?

谢谢..

+1

你可以发布一些aspx代码? –

回答

3

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

Page_Load事件发生在每回发一次 - 每按一下按钮,或触发回发的任何事件。

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

  1. 移动数据绑定代码Page_Init
  2. 把你的数据绑定在Page_Load中的if(!Page.IsPostback)块内。

实质上,问题在于你的页面在第一次加载时是数据绑定的。 然后,编辑事件由某些客户端操作触发,这会触发回发。在此回发中,Page_Load首先触发,它重新绑定GridView,擦除与之前加载相关的所有数据。所以当RowEditing事件触发时(控件事件总是在Page_Load之后发生的),它没有任何事情可做。所有对回传之前存在的数据的引用都没有了。

如果您将绑定代码也移动到Page_Init中,则可以避免这种情况,因为页面将被绑定,然后所有Viewstate都将被重新应用到它,还原丢失在回发中的数据上面的场景。

+0

这是Gridview的字体大小,它看起来大小不是很好的点击,我只是把它放在一个更大的尺寸,现在是好的。谢谢。 – pyram

+1

@pyram - 哦..如果我的回答不对,我会感觉更好,如果你删除了问题而不是接受不正确的答案。未来的访客会更好(更少误导)。我更担心的是比我更关心点。我不知道你是否有足够的代表删除,但如果没有,我可以随时举报并要求版主为你删除。请让我知道。 – David

相关问题