【问题标题】:asp.net, Gridview RowEditing event only works on first rowasp.net,Gridview RowEditing 事件仅适用于第一行
【发布时间】:2012-09-10 01:15:02
【问题描述】:

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

我该如何解决这个问题?

谢谢..

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    您很可能在 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将被重新应用到它,恢复在场景中回发中丢失的数据以上。

    【讨论】:

    • 原来是Gridview的字体大小,好像不太好点击,我就放大了,现在好了。谢谢。
    • @pyram - 哦.. 如果我的答案不是正确的,如果你删除问题而不是接受不正确的答案,我会感觉更好。这对未来的访客来说更好(更少误导)。比起分数,我更担心会有所帮助。我不知道您是否有足够的代表删除,但如果没有,我可以随时标记它并要求版主为您删除它。请告诉我。
    猜你喜欢
    • 1970-01-01
    • 2012-02-05
    • 2015-10-04
    • 1970-01-01
    • 2018-07-25
    • 2015-12-09
    • 2018-06-26
    • 2016-06-25
    • 2020-12-26
    相关资源
    最近更新 更多