Search code examples
c#asp.netasp.net-ajaxupdatepanel

Using GridView inside UpdatePanel


I have an Updatepanel and Gridview inside it.

<asp:UpdatePanel ID="uplPanel" UpdateMode="Conditional" runat="server" OnLoad="uplPanel_Load">
<ContentTemplate>
 <asp:GridView ID="gvPrList" runat="server" AutoGenerateColumns="false" AllowPaging="false"
       AllowSorting="false" CssClass="list-table" HeaderStyle-CssClass="header">
       <Columns>
     <ItemTemplate>
               <asp:Button ID="btnEdit" runat="server" Text="Edit" CssClass="button save" OnCommand="onPrItemCmd"
                   CommandName="editRow" CommandArgument='<%#Bind("ID") %>' Style="width: 80px" />
               <asp:Button ID="btnDelete" runat="server" Text="Delete" CssClass="button save" OnCommand="onPrItemCmd"
                   CommandName="deleteRow" CommandArgument='<%#Bind("ID") %>' Style="width: 80px" />
           </ItemTemplate>
       </asp:TemplateField>
   </Columns>

When I click on my buttons inside the Griview, it does not fire the events. Any idea?


Solution

  • I did the following and it works

    I replace asp button with html button and call javascript method to fire Update Panal Load event.

    <input id="btnDelete1" type="button" onclick="javascript:DeletePrItem('<%# Eval("ID") %>');" value="Delete" class="button save" style="width: 80px" />
    

    My Js :

        function DeletePrItem(_Id) {
            __doPostBack('<%= uplPanel.ClientID %>', _Id);
        }
    

    My Code behind :

        protected void uplPanel_Load(object sender, EventArgs e)
        {
            var arg = Request.Params.Get("__EVENTARGUMENT");
    
            if (arg != null)
            {
                if (arg != "")
                {
                    string recordId = arg.ToString();
                    //Do deletetion and rebind data grid
    
        }
         }
    }