【发布时间】:2009-06-08 20:26:38
【问题描述】:
我有一个带有 AutoGenerateColumns="False" 的 Gridview。
我正在使用 TemplateField 在相应 ItemTemplate 和 EditItemTemplate 字段中的 GridView 的第一列中显示我的编辑、更新和取消“按钮”。
在 ItemTemplate 中,我有一个 CommandName 为“Edit”的 ImageButtong。这按预期工作,我可以在 RowCommand 事件处理程序中放置一个断点以查看“事件”命令名称。单击后,回发将该行置于编辑模式。所有文本框都按原样显示。
此时,上面的 EditItemTemplate 显示其中包含两个 ImageButton。一个是CommandName = "Update",另一个是“Cancel”。
我的问题在于点击 Update ImageButton 后返回,但是 RowCommand 和 RowUpdating 事件都没有被触发。
我已经在 GridView 标记中设置了必要的属性。 (注意,在gridview 中EnableViewState="False" - 如果我将其设置为True,我会得到标准
“加载视图状态失败。控制树...”等错误)
我注意到的一件奇怪的事情让我认为这是一个 ViewState 问题,如果我将更新按钮的 CommandName 更改为“编辑”,那么回发事件确实会在 RowCommand 事件中被捕获...
欢迎提出任何建议。谢谢。
【问题讨论】:
-
有没有人用自己的 TemplateFields 替换 CommandField(GridView 功能的内置按钮)进行编辑的示例?
-
爆炸!我刚刚记得我需要 TemplateField 解决方案,因为我在页脚中也有一个 Insert 行,并且要求 FooterTemplate 包含一个 ImageButton...把我的头发拉出来!!如果没有被删除,请忽略下面的自我回答。
-
使用自定义
TemplateField时一定要使用CommandNameUpdate。
标签: asp.net events gridview viewstate