ASP.NET + GridView + CommandField como TemplateField
-
22-07-2019 - |
Pergunta
Eu tenho um GridView. Meu GridView tem uma coluna que é contém uma coluna de "Opções". Esta coluna inclui as opções CommandField tradicionais (editar, apagar, etc.). Tenho a configuração do código de trabalho quando um CommandField é usado. No entanto, eu preciso fazer a formatação de um costume, então eu precisava para converter o CommandField a um TemplateField.
A minha pergunta é: como faço para acionar o OnRowCommand, OnRowEditing, OnRowDeleting e OnRowUpdating eventos dos vários elementos LinkButton na minha TemplateField?
Obrigado!
Solução
Tudo que você tem a fazer é definir a propriedade CommandName do interior LinkButton de sua coluna de modelo para 'Editar' para editar, 'Delete' para apagar e 'Update' para atualização. Isso acionará o GridView RowEditing, RowDeleting e RowUpdating eventos respectivamente. Para disparar o evento RowCommand você precisa definir a propriedade OnRowCommand de seu controle GridView.
<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>
Outras dicas
Eu tive o mesmo problema.
Para editar, eu fiz o seguinte:
<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" />
<asp:LinkButton ID="Cancel"
runat="server"
CommandName="Cancel"
Text="Cancel" />
</EditItemTemplate>
</asp:TemplateField>
Isto permite a exibição / ocultação de atualização e botões cancelar.
Quanto à exclusão, eu usei o seguinte:
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="DeleteButton"
Text="Delete"
CommandName="Delete"
runat="server" />
</ItemTemplate>
</asp:TemplateField>
clique em colunas em propriedades, adicione CommandField(Edit,update,Cancel)
e clique em "Converter este campo para templatefield"
Swich a Fonte e automaticamente vai adicionar um código.