Событие щелчка кнопки «Вставить» (динамически добавляется в метод привязки 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 нет ошибки.