ClickEvent не запускается (из ImageButton, динамически добавляемого в виде сетки, которая находится под UpdatePanel) - PullRequest
0 голосов
/ 20 декабря 2018

Событие щелчка кнопки «Вставить» (динамически добавляется в метод привязки GridView) в GridView FooterRow (которое находится под UpdatePanel) не запускается. ScreenShot: Цель состоит в том, чтобы imageButton находился в footerRow и в том же столбце, что и CommandField Я испробовал множество решений: с использованием события preRender, как показано здесь или с использованием RowDataBoundсобытие .Ни один из них не работал.Я также попытался добавить кнопку как AsyncPostBackTrigger, но она выдает ошибку:

Не удалось найти элемент управления с идентификатором 'btn_Insert' для триггера в UpdatePanel 'myUpdatePanel'.

Может быть, у вас есть другое решение для принудительного запуска кнопки Click?Спасибо!

<asp: UpdatePanel ID="myUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false" >
        <ContentTemplate>
            <asp:GridView ID="GridView_UpdateMembers" runat="server" AutoGenerateColumns="false" ShowFooter="true" ShowHeaderWhenEmpty="false"
                  OnRowDataBound="GridView_UpdateMembers_RowDataBound"
                OnPageIndexChanging="GridView_UpdateMembers_PageIndexChanging"
                RowCancelingEdit="GridView_UpdateMembers_RowCancelingEdit"
                OnRowDeleting="GridView_UpdateMembers_RowDeleting"
                OnRowEditing="GridView_UpdateMembers_RowEditing"
                OnRowUpdating="GridView_UpdateMembers_RowUpdating"
                OnRowCancelingEdit="GridView_UpdateMembers_RowCancelingEdit" Font-Size="Small" RowStyle-Wrap="true" OnRowCommand="GridView_UpdateMembers_RowCommand"  >
                <Columns >
                    <asp:TemplateField HeaderText="Full name">
                        <ItemTemplate>
                            <asp:Label ID="lbl_FullName" runat="server" Text='<%# Bind("FULLNAME") %>'></asp:Label>
                        </ItemTemplate>
                            <EditItemTemplate> 
                            <asp:TextBox ID="txt_Edit_FullName"  runat="server" Text='<%# Bind("FULLNAME") %>' > </asp:TextBox>
                            </EditItemTemplate> 
                        <FooterTemplate>
                            <asp:TextBox ID="txt_FullName" runat="server" CssClass="TextBoxFooterTemplate"> 
                            </asp:TextBox>
                        </FooterTemplate>
                    </asp:TemplateField>

                    <%--....--%>

                    <asp:CommandField ButtonType="Image" ItemStyle-Wrap="false" ShowEditButton="true" EditImageUrl="~/Images/edit.png"
                        CancelImageUrl="~/Images/cancel.png" EditText="Edit" DeleteText="Delete" CancelText="Cancel"
                        UpdateText="Update" UpdateImageUrl="~/Images/update.png"
                        ShowDeleteButton="true" DeleteImageUrl="~/Images/delete.png"/>
                </Columns>

                <EditRowStyle CssClass="GridViewEditRow" />
             </asp:GridView>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="GridView_UpdateMembers" EventName="RowCancelingEdit" />
    </Triggers>


    </asp:UpdatePanel>
 public void Btn_Insert_Click(object sender, EventArgs e)
    {
        isLogged();
        var member = new Member();
        GridViewRow footerRow = GridView_UpdateMembers.FooterRow;

        var txtBoxfullName = (ITextControl)footerRow.Cells[0].Controls[1];
        member.Fullname = txtBoxfullName.Text;
//...}

    var btn_Insert = new ImageButton();
        btn_Insert.ToolTip = "Add to list";
        btn_Insert.ID = "btn_Insert";
        btn_Insert.Click += Btn_Insert_Click;
        btn_Insert.CommandName = "Add";
        btn_Insert.ImageUrl = "~/Images/add.png";
        GridView_UpdateMembers.FooterRow.Cells[GridView_UpdateMembers.FooterRow.Cells.Count - 1].Controls.Add(btn_Insert);

        //var trigger = new AsyncPostBackTrigger();
        //trigger.ControlID = "btn_Insert";
        //trigger.EventName = "Btn_Insert_Click";
        //myUpdatePanel.Triggers.Add(trigger);

        //btn_Insert.PreRender += Btn_Insert_PreRender;
    }
    private void Btn_Insert_PreRender(object sender, EventArgs e)
    {
        //ImageButton btn = sender as ImageButton;
        //ScriptManager sc = ScriptManager.GetCurrent(this.Page);
        //sc.RegisterPostBackControl(btn);

    }

    protected void GridView_UpdateMembers_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        //if (e.CommandName == "Add")
        //{
        //    isLogged();
        //    var member = new Member();
        //    GridViewRow footerRow = GridView_UpdateMembers.FooterRow;}

Когда я щелкаю сейчас, кнопка изображения просто исчезает, и в ответе http нет ошибки.

...