10

我有一个 GridView。我的 GridView 有一列包含“选项”列。此列包括传统的 CommandField 选项(编辑、删除等)。当使用 CommandField 时,我的代码设置可以工作。但是,我需要做一些自定义格式,所以我需要将 CommandField 转换为 TemplateField。

我的问题是,如何从 TemplateField 中的各种 LinkBut​​ton 元素触发 OnRowCommand、OnRowEditing、OnRowDeleting 和 OnRowUpdating 事件?

谢谢!

4

3 回答 3

23

您所要做的就是将模板列内 LinkBut​​ton 的 CommandName 属性设置为“编辑”以进行编辑,“删除”以进行删除,“更新”以进行更新。这将分别触发 GridView RowEditing、RowDeleting 和 RowUpdating 事件。要触发 RowCommand 事件,您需要设置 GridView 控件的 OnRowCommand 属性。

<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand"
    OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing"
    OnRowUpdating="GridView1_RowUpdating">
<Columns>
    <asp:TemplateField>
        <ItemTemplate>
            <!--To fire the OnRowEditing event.-->
            <asp:LinkButton ID="lbEdit" runat="server" CommandName="Edit" 
                Text="Edit">
            </asp:LinkButton>
            <!--To fire the OnRowDeleting event.-->
            <asp:LinkButton ID="lbDelete" runat="server" CommandName="Delete" 
                Text="Delete">
            </asp:LinkButton>
            <!--To fire the OnRowUpdating event.-->
            <asp:LinkButton ID="lbUpdate" runat="server" CommandName="Update" 
                Text="Update">
            </asp:LinkButton>
        </ItemTemplate>
    </asp:TemplateField>
</Columns>    
</asp:GridView>
于 2009-10-30T03:26:28.190 回答
13

我有同样的问题。

对于编辑,我做了以下事情:

        <asp:TemplateField ShowHeader="False">
            <ItemTemplate>
                <asp:LinkButton ID="EditButton"
                                runat="server"
                                CommandName="Edit" 
                                Text="Edit" />
            </ItemTemplate>
            <EditItemTemplate>
                <asp:LinkButton ID="UpdateButton"
                                runat="server"
                                CommandName="Update"
                                Text="Update" />&nbsp;
                <asp:LinkButton ID="Cancel"
                                runat="server"
                                CommandName="Cancel"
                                Text="Cancel" />
            </EditItemTemplate>
        </asp:TemplateField>

这允许显示/隐藏更新和取消按钮。

至于删除,我使用了以下内容:

    <asp:TemplateField>
        <ItemTemplate>
            <asp:LinkButton ID="DeleteButton"
                            Text="Delete"
                            CommandName="Delete" 
                            runat="server" />
        </ItemTemplate>
    </asp:TemplateField>
于 2010-09-07T22:16:49.917 回答
1

单击属性中的列,添加CommandField(Edit,update,Cancel)并单击“将此字段转换为模板字段”

切换到 Source 并自动添加代码。

于 2012-04-11T10:55:26.723 回答