Кнопки "Обновить / Отменить" не отображаются в кнопке "Редактирование шаблона".

Когда вы создаете кнопку редактирования в каждой строке Gridview, используя CommandField после нажатия отображаются кнопки обновления / отмены, поэтому вы можете принять / отменить изменения. Тем не менее, я хочу кнопку редактирования, которая имеет текст всплывающей подсказки, и так как CommandField не имеет свойства всплывающей подсказки, я использовал TemplateField, Работало с кнопкой удаления, но у меня проблемы с кнопкой редактирования:

<asp:GridView ID="GridView1" runat="server" 
                    AllowPaging="True" AllowSorting="True"
                    DataMember="DefaultView" 
                    DataSourceID="SqlDataSource1" AutoGenerateColumns="False" 
                    DataKeyNames=FIELD,FIELD,FIELD" CellPadding="4" ForeColor="#333333" Width="90%"
                    Height="90%" Font-Size="Small">
                    <RowStyle BackColor="#EFF3FB" />
                    <Columns>
                        <asp:BoundField DataField="FIELD" HeaderText="FIELD" ReadOnly="True" 
                            SortExpression="FIELD" />
                        <asp:BoundField DataField="FIELD" HeaderText="FIELD" 
                            SortExpression="FIELD" />
                        <asp:BoundField DataField="FIELD" HeaderText="FIELD" 
                            SortExpression="FIELD" />
                        <asp:BoundField DataField="FIELD" HeaderText="FIELD" ReadOnly="True" 
                            SortExpression="FIELD" />
                        <asp:BoundField DataField="FIELD" HeaderText="FIELD" ReadOnly="True" 
                            SortExpression="FIELD" />
                        <asp:BoundField DataField="FIELD" HeaderText="FIELD" 
                            SortExpression="FIELD" />                        
                            <asp:CommandField ButtonType="Image"  Visible="true" EditText="Edit" ShowEditButton="True" EditImageUrl="images/pencil1.png"></asp:CommandField>                            
                            <asp:TemplateField >
                            <ItemTemplate>
                             <asp:ImageButton ID="deleteButton" runat="server" CommandName="Delete" Text="Delete" 
                                        OnClientClick="return confirm('¿Are you sure?');" ToolTip="delete" ImageUrl="images/DeleteRed1.png" />
                            </ItemTemplate>                                     
                            </asp:TemplateField>
                    </Columns>                    
                    <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                    <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
                    <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
                    <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                    <EditRowStyle BackColor="#2461BF" />
                    <AlternatingRowStyle BackColor="White" />
                </asp:GridView>

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:DBUserInterfaceConnectionString %>"                     
                    SelectCommand="SELECT ... FROM ...  INNER JOIN ... ON ..."
                    DeleteCommand="DELETE FROM ... WHERE ...=@param;"
                    UpdateCommand="UPDATE ... SET ... = @param, ... = @param2 WHERE ... = @param3 and ... = @param4 and ... = @param5;"
                    >
                    </asp:SqlDataSource>

Как я уже говорил, я заменил CommandField с:

<asp:TemplateField >
<ItemTemplate> 
<asp:ImageButton ID="editButton" runat="server" CommandName="Edit" Text="Edit" ToolTip="Edit" ImageUrl="images/pincel1.png" />  
</ItemTemplate>
</asp:TemplateField >

но кнопки "Обновить / Отменить" не появляются, поэтому я не могу ничего обновить / отредактировать. Почему это происходит?

Любые идеи для реализации успешной кнопки редактирования?

ЗАМЕТКИ:

  1. Обе кнопки не имеют кода VB, по какой-то причине кнопка удаления работает только с DeleteCommand в SqlDataSourceи, если я пытаюсь удалить команду, она выдает ошибку, потому что команда DeleteCommand не указана.

  2. UpdateCommand не имеет смысла, его можно удалить. Я мог бы использовать его для кнопки обновления вместо кнопки редактирования, но когда я пытался, он говорит @params неизвестно, поэтому я решил использовать кнопку редактирования.

2 ответа

Решение

<asp:TemplateField> используется, когда вы хотите установить свой собственный, т.е. пользовательский контент, для каждого элемента в элементе управления GridView.

<asp:CommandField> используется, когда вы хотите использовать предварительно определенные командные кнопки для выполнения операций выбора, редактирования или удаления. Проверьте MSDN здесь.

Таким образом, когда вы используете свой собственный определяемый пользователем способ для кнопки редактирования, вам также нужно указать свой собственный путь к содержимому для кнопки Обновить и Отменить внутри <EditItemTemplate> как:

<asp:TemplateField >            
<ItemTemplate> 
<asp:ImageButton ID="editButton" runat="server" CommandName="Edit" Text="Edit" 
     ToolTip="Edit" ImageUrl="images/pincel1.png" />  
</ItemTemplate>            
<EditItemTemplate>
<asp:ImageButton ID="BtnUpdate" runat="server" CommandName="Update" Text="Update" 
     OnClick="BtnUpdate_Click" ImageUrl="images/Update.png"/>
<asp:ImageButton ID="BtnCancel" runat="server" CommandName="Cancel" Text="Cancel" 
     OnClick="BtnCancel_Click" ImageUrl="images/Cancel.png"/>
</EditItemTemplate>        
</asp:TemplateField >

И просто убедитесь, что только если вы снова предоставляете свою пользовательскую реализацию для логики Update & Cancel, вы также определяете события onclick для этих двух кнопок Update и Cancel. Остальное удали OnClick из разметки этих кнопок. [ BtnUpdate_Click & BtnCancel_Click Вот.]

Я думаю, что после того, как вы преобразовали его в TemplateField, все автоматически функционирующие вещи (например, кнопки "Обновить / Отмена") были отключены. Держу пари, вам нужно добавить <EditItemTemplate> с помощью кнопок "Обновить" и "Отмена" и подключите их к соответствующим командам, используя CommandName,

Другие вопросы по тегам