GridView linkbutton does not call UpdatePanel

I have an asp page with a regular panel that contains a gridview. There are some link buttons in gridview that are used to create pdf.

I also have an UpdatePanel inside the regular panel and below the gridview that contains the label.

When the user clicks the “generate” button in the gridview, I want the label to say “generate report” or something like that.

I could not get this to work at all. I can throw values ​​into a label all day and nothing.

Here is the panel code:

<asp:Panel ID="ReportsPanel" runat="server" Height="611px">
    <h2>
        Reports
    </h2>
    <asp:Label ID="ReportsNotification" runat="server"></asp:Label>
    <br />
    <asp:Label ID="Label1" runat="server" Text="Pharmacy: "></asp:Label>
    <asp:DropDownList ID="PharmaciesDropDownList" runat="server" AutoPostBack="true"
        OnSelectedIndexChanged="PharmaciesDropDownList_SelectedIndexChanged">
    </asp:DropDownList>
    <br />
    <br />
    <asp:GridView ID="ListReportsGridView" runat="server" AllowPaging="true" AllowSorting="true"
        GridLines="None" PageSize="10" CssClass="GridView" AutoGenerateColumns="false"
        EmptyDataText="No rows for selection." OnRowCommand="ListReportsGridView_RowCommand"
        OnPageIndexChanging="ListReportsGridView_PageIndexChanging"
        EnablePersistedSelection="True"
        DataKeyNames="FinDataID">
        <AlternatingRowStyle CssClass="GridViewAltRow" />
        <HeaderStyle CssClass="GridViewHeader" />
        <RowStyle CssClass="GridViewItem" />
        <PagerStyle CssClass="GridViewPager" />
        <Columns>
            <asp:BoundField DataField="ID" HeaderText="ID" ControlStyle-CssClass="Hidden" ItemStyle-CssClass="Hidden"
                HeaderStyle-CssClass="Hidden" FooterStyle-CssClass="Hidden" />
            <asp:BoundField DataField="FinDataID" HeaderText="FinDataID" ControlStyle-CssClass="Hidden" ItemStyle-CssClass="Hidden"
                HeaderStyle-CssClass="Hidden" FooterStyle-CssClass="Hidden" />
            <asp:BoundField DataField="PeriodStart" HeaderText="Period Start" DataFormatString="{0:dd/MM/yyyy}" />
            <asp:BoundField DataField="PeriodEnd" HeaderText="Period End" DataFormatString="{0:dd/MM/yyyy}" />
            <asp:TemplateField HeaderText="Reports Available for Download"><ItemTemplate><asp:LinkButton ID="LinkButtonViewRpt" Text='<%#Eval("FileName") %>' CommandName="ViewRpt" CommandArgument="<%# Container.DataItemIndex %>" runat="server"></asp:LinkButton></ItemTemplate></asp:TemplateField>    
            <asp:TemplateField Visible="false"><ItemTemplate><asp:LinkButton ID="LinkButtonGenerateRpt" Text='Generate' CommandName="GenerateRpt" CommandArgument="<%# Container.DataItemIndex %>" runat="server"></asp:LinkButton></ItemTemplate></asp:TemplateField>    
            <asp:TemplateField Visible="false"><ItemTemplate><asp:LinkButton ID="LinkButtonUploadRpt" Text='Upload' CommandName="UploadRpt" CommandArgument="<%# Container.DataItemIndex %>" runat="server"></asp:LinkButton></ItemTemplate></asp:TemplateField>    
        </Columns>
    </asp:GridView>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="LinkButtonGenerateRpt" EventName="Click" />
        </Triggers>
        <ContentTemplate>
            <asp:Label ID="lblMessage" runat="server" Text=""></asp:Label>
        </ContentTemplate>
    </asp:UpdatePanel>
    <br />
</asp:Panel>

I tried with a button in UpdatePanel, outside of UpdatePanel, but none of these ideas worked. Of course it is possible!

, , "" PDF , Response.End. , . , UpdatePanel , ... , , UpdatePanel, .

gridview:

protected void ListReportsGridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
    intIndex = Convert.ToInt32(e.CommandArgument);
    if (e.CommandName == "GenerateRpt")
    {//render pdf

        //populate empty report object with row information
        objFileData = new FileData();
        objFileData.PharmacyID = Convert.ToInt32(PharmaciesDropDownList.SelectedValue);
        objFileData.FinDataID = Convert.ToInt32(ListReportsGridView.Rows[intIndex].Cells[1].Text);
        objFileData.CreateDate = Convert.ToDateTime(DateTime.Now);
        objFileData.CreatedByID = Convert.ToInt32(Session["UserID"]);
        objFileData.PeriodStart = Convert.ToDateTime(ListReportsGridView.Rows[intIndex].Cells[2].Text);

        lblMessage.Text = "Report generating...";
        //btnGenerate_Click(sender, e);
        RenderPdf();

    }

!

EDIT: ...

ID 'LinkButtonGenerateRpt' UpdatePanel 'UpdatePanel1'.

UniqueID ?

+4
2

UpdateMode , , , UpdatePanel1.Update();

+4

, , updatepanel . : A control with ID 'LinkButtonGenerateRpt' could not be found for the trigger in UpdatePanel 'UpdatePanel1

, Linkbutton , ScriptManager.RegisterAsyncPostBackControl , AsyncPostBackTrigger .

GridView OnRowCreated ScriptManager.RegisterAsyncPostBackControl LinkButton. findcontrol. linkbutton OnClick UpdatePanel.Update(), .

GridView Markup ( Linkbutton ). OnClick .

<asp:TemplateField Visible="false">
<ItemTemplate>
<asp:LinkButton ID="LinkButtonGenerateRpt" Text='Generate' 
     CommandName="GenerateRpt" 
     CommandArgument="<%# Container.DataItemIndex %>" 
     OnClick="LinkButtonGenerateRpt_Click"runat="server">
    </asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>

// Grid View RowCreated. asyncpostback

protected void ListReportsGridView_RowCreated(object sender, GridViewRowEventArgs e)
 {
    Control lnkBtnControl = e.Row.Cells[5].FindControl("LinkButtonGenerateRpt");
       if (lnkBtnControl!= null)
         {
            ScriptManager1.RegisterAsyncPostBackControl(lnkBtnControl );
         }    
 }

UpdatePanel LinkButton :

protected void LinkButtonGenerateRpt_Click(object sender, EventArgs e)
        {

            UpdatePanel1.Update();

        }
+3

All Articles