Member 8583441 Ответов: 1

Кнопка редактирования нажимается два раза, чтобы работать в ASP.NET gridview


Когда я нажимаю кнопку редактирования два раза, она запускает событие, а также текстовое поле Поля редактирования не фокусирует его автоматически, выходя из фокуса.

На самом деле этот gridview был привязан к sqldatasource, а не к методу. Не только кнопки редактирования обновления и отмены, а также кнопки. Где я делаю что-то не так, может ли кто-нибудь подсказать мне. Здесь я использовал таймер для загрузки данных без обновления страницы

Что я уже пробовал:

<asp:UpdatePanel ID="up" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="tGVLoadData" EventName="Tick" />
    </Triggers>
    <ContentTemplate>
        <%-- Timer --%>
        <asp:Timer ID="tGVLoadData" runat="server" Interval="1000" OnTick="Timer1_Tick"></asp:Timer>
        <%-- GridView --%>
        <asp:GridView ID="gv" runat="server" AutoGenerateColumns="False" EmptyDataText="No Records Found" AllowPaging="True" GridLines="Vertical" AlternatingRowStyle-CssClass="alt" SkinID="gridviewSkin" Width="100%" CssClass="label" DataSourceID="DataSource" DataKeyNames="EmpID" OnRowEditing="gv_RowEditing" OnRowCancelingEdit="gv_RowCancelingEdit"                                          OnRowUpdating="gv_RowUpdating" OnRowDataBound="gv_RowDataBound"                                            ShowHeaderWhenEmpty="true" OnRowCommand="gv_RowCommand" EnableViewState="false">
            <AlternatingRowStyle CssClass="alt" />
            <Columns>
                <asp:TemplateField HeaderText="Simple">
                    <ItemTemplate>
                        <asp:Label ID="lblSimple" runat="server" Text='<%#Eval("Simple") %>' Width="40px"></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="txtSimple" runat="server" Text='<%#Eval("Simple") %>' Width="40px"></asp:TextBox>
                    </EditItemTemplate>
                </asp:TemplateField>
                <%-- Buttons --%>
                <asp:TemplateField ItemStyle-Width="100px">
                    <ItemTemplate>
                        <%-- Edit --%>
                        <asp:Button ID="btnEdit" runat="server" Text="Edit" CssClass="btn btn-link text-center" ToolTip="Edit Details" CommandName="Edit" UseSubmitBehavior="false" OnClick="btnEdit_Click" CausesValidation="false" />
                        <%-- Approve --%>
                        <asp:Button ID="btnSimple" runat="server" Text="Approve" CssClass="btn btn-link text-center" ToolTip="Approve" OnClick="btnSimple" Enabled="false" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:Button ID="btnUpdate" runat="server" Text="Update" CommandName="Update" CssClass="btn btn-link" UseSubmitBehavior="false" />
                        <asp:Button ID="btnCancel" runat="server" Text="Cancel" CommandName="Cancel" CssClass="btn btn-link" />
                    </EditItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

        <asp:SqlDataSource runat="server" ID="DataSource" ConnectionString='<%$ ConnectionStrings:DefaultConnection %>' SelectCommand="SELECT [EmpID] FROM [Emp_Table]"></asp:SqlDataSource>

    </ContentTemplate>
</asp:UpdatePanel>


с фоновым кодом:
Событие Загрузки Страниц
if(!IsPostBack)
{
   foreach (GridViewRow row in gv.Rows)
   {
       aspBtnEdit = ((Button)row.FindControl("btnEdit"));
       btn = ((Button)row.FindControl("btnSimple"));
       aspBtnUpdate = ((Button)row.FindControl("btnUpdate"));
       aspBtnCancel = ((Button)row.FindControl("btnCancel"));                   
   }
}

Здесь aspBtnEdit, БТН aspBtnUpdate, aspBtnUpdate несколько строк объявлен глобально

1 Ответов

Рейтинг:
4

Member 8583441

Проблема решена..... Раньше я использовал интервал таймера до 100, а теперь перешел на 1000, работая, как и ожидалось.....