Я подозреваю, что проблема связана с тем, как данные связаны с сеткой.
Вот рабочий пример, демонстрирующий GridView с включенным AJAX:
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" CssClass="table table-bordered table-hover">
<Columns>
<asp:BoundField DataField="VisM_No" HeaderText="Visit No." />
<asp:BoundField DataField="VisM_Date" HeaderText="Visit Date" />
<asp:BoundField DataField="Pat_name" HeaderText="Patient Name" />
<asp:TemplateField Visible="true" ItemStyle-CssClass="btnPdf">
<ItemTemplate>
<asp:Button ID="btnPrint" Text="Print PDF" runat="server" CssClass="btn btn-info" CommandName="PrintPDF" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridView1.DataSource = Enumerable.Range(1, 3).Select(x => new {
VisM_No = x,
VisM_Date = DateTime.Now,
Pat_name = "Name " + x
});
GridView1.DataBind();
}
}
Результаты: