如何避免 gridview 的编辑模式?

How to avoid the edit mode on a gridview?

我在 SO 中搜索了答案,但找不到。

我有一个这样的网格视图:

<asp:GridView ID="gdvSubEventos" AutoGenerateColumns="False" runat="server">
    <Columns>
        <asp:BoundField HeaderText="Descrição" DataField="Descricao">
        </asp:BoundField>
        <asp:BoundField HeaderText="Data" DataField="data" DataFormatString="{0:dd/MM/yyyy}">  
        </asp:BoundField>
        <asp:CommandField HeaderText="Opção" EditText="Editar" ShowEditButton="true">
        </asp:CommandField>
    </Columns>
</asp:GridView>

如果用户点击编辑,将打开另一个表单(在同一页面的网格上方)进行编辑。

问题是:当用户第一次点击编辑按钮时,一切正常。但如果他再次点击编辑按钮,在第一次编辑回发后,gridview 中的行变为可编辑。

我怎样才能始终避免在 gridviews 上进入编辑模式?

如果您使用命令字段中提供的按钮,您将触发 gridview 的编辑功能,并且 gridview 期望您将使用嵌入式编辑。无需深入了解太多细节,您只需在 RowEditEvent 的底部设置 gdvSubEventos.EditIndex = -1 这将使 gridview 退出编辑模式。

为了完全避免 gridview 进入编辑模式 - 然后在命令字段中禁用编辑 添加一个编辑按钮以显示您自己的表单:

  1. 添加一个<asp:ButtonField>到列列表
  2. 将其转换为模板字段。

在 GridView RowDataBound 事件中

  1. 找到按钮控件
  2. 将其 CommandName 分配给 "MyEdit"
  3. 为它的 CommandArgument 分配行索引,以便您知道select编辑了哪一行。

当你select这个按钮时,它会触发按钮的 CommandEvent,而不是 GridView,所以你需要行索引引用来从 Gridview 中获取你需要的数据来填充你的字段。