Javascript GridView PageIndexchange事件未在UpdatePanel内触发

Javascript GridView PageIndexchange事件未在UpdatePanel内触发,javascript,c#,asp.net,gridview,Javascript,C#,Asp.net,Gridview,我还没有找到任何解决问题的方法: GridView分页事件gvu PageIndexChanging在UpdatePanel中时不触发 问题代码如下: <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> <ContentTemplate> <div class="col-lg-12 table-responsive"> <asp:GridVi

我还没有找到任何解决问题的方法:

GridView分页事件
gvu PageIndexChanging
在UpdatePanel中时不触发

问题代码如下:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
  <ContentTemplate>

  <div class="col-lg-12 table-responsive">
  <asp:GridView ID="gvBanquet" runat="server" AutoGenerateColumns="false" 
      OnRowCommand="gvBanquet_RowCommand" AllowPaging="True" PageSize="5" 
      EmptyDataText="No record found!" OnPageIndexChanging="gvBanquet_PageIndexChanging" 
      ShowHeaderWhenEmpty="true">
      <Columns>

      // here are templates 

      </Columns>
      <PagerStyle CssClass="pagination-ys" />
  </asp:GridView>

  </div>
  <!-- /.col-lg-12 -->

  </ContentTemplate>
  <Triggers>
      <asp:AsyncPostBackTrigger ControlID="gvBanquet" EventName="PageIndexChanging" />
  </Triggers>
</asp:UpdatePanel>
我添加了一个断点,但它没有开火

如何启动寻呼按钮


不查看
getdata
代码的一种可能情况是:

每次更改页面索引时,您都应该读取用于加载gridview的数据集(您的案例数据表)。通过这种方式,您可以确保在每个由gridview页码触发的单独回发中,都会填充结果

更新

尝试添加触发器

<Triggers>
        <asp:AsyncPostBackTrigger ControlID="gvBanquet" EventName="PageIndexChanging" />
 </Triggers>

不查看
getdata
代码的一种可能情况是:

每次更改页面索引时,您都应该读取用于加载gridview的数据集(您的案例数据表)。通过这种方式,您可以确保在每个由gridview页码触发的单独回发中,都会填充结果

更新

尝试添加触发器

<Triggers>
        <asp:AsyncPostBackTrigger ControlID="gvBanquet" EventName="PageIndexChanging" />
 </Triggers>


GridView没有绑定方法,所以我提供了两种方法(两种方法都有效)
方法1:与
SqlDataSource的声明性绑定

<form id="form1" runat="server">
    <%--ScriptManager required by UpdatePanel --%>
    <asp:ScriptManager runat="server" ID="sm" />
<div>
    <asp:UpdatePanel runat="server" UpdateMode="Conditional">
        <ContentTemplate>
    <asp:GridView ID="gvProducts" runat="server" AutoGenerateColumns="False" AllowPaging="true" PageSize="5" DataKeyNames="ProductID" DataSourceID="sqlNWind">
        <Columns>
            <asp:BoundField DataField="ProductID" HeaderText="ProductID" SortExpression="ProductID" />
            <asp:BoundField DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" />
            <asp:TemplateField HeaderText="CategoryName" SortExpression="CategoryName">
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("CategoryName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
    <%--Triggers are redundant because GridView is inside the UpdatePanel --%>
        </ContentTemplate>
    </asp:UpdatePanel>
    <asp:SqlDataSource ID="sqlNWind" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindCnn %>"
        SelectCommand="SELECT Products.ProductID, Products.ProductName, Products.CategoryID, Categories.CategoryName FROM Products INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID">
    </asp:SqlDataSource>
</div>
</form>

不需要代码隐藏

方法2:从代码隐藏绑定:

.aspx
<form id="form1" runat="server">
    <asp:ScriptManager runat="server" ID="sm" />
<div>
    <asp:UpdatePanel runat="server" UpdateMode="Conditional">
        <ContentTemplate>
    <asp:GridView ID="gvProducts" runat="server" OnPageIndexChanging="gvProducts_PageIndexChanging" AutoGenerateColumns="False" AllowPaging="true" PageSize="5" DataKeyNames="ProductID">
        <Columns>
            <asp:BoundField DataField="ProductID" HeaderText="ProductID" InsertVisible="False" ReadOnly="True" SortExpression="ProductID" />
            <asp:BoundField DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" />
            <asp:TemplateField HeaderText="CategoryName" SortExpression="CategoryName">
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("CategoryName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

        </ContentTemplate>
    </asp:UpdatePanel>
</div>
</form>

.aspx.vb

Private Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
        BindProds()''//Bind initial
    End If
End Sub
Protected Sub gvProducts_PageIndexChanging(sender As Object, e As GridViewPageEventArgs)
    gvProducts.PageIndex = e.NewPageIndex
    BindProds()''//Bind when pageIndex changing
End Sub

Private Sub BindProds()
    Using cnn As New Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("NorthwindCnn").ConnectionString)
        Using cmd As New Data.SqlClient.SqlCommand("SELECT Products.ProductID, Products.ProductName, Products.CategoryID, Categories.CategoryName FROM Products INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID", cnn)
            Dim da As New Data.SqlClient.SqlDataAdapter(cmd)
            Dim dt As New Data.DataTable()
            da.Fill(dt)
            da.Dispose()
            gvProducts.DataSource = dt
            gvProducts.DataBind()
        End Using
    End Using
End Sub
.aspx
.aspx.vb
私有子页加载(发送者作为对象,e作为事件参数)处理Me.Load
如果不是Page.IsPostBack,则
BindProds()“”//绑定初始值
如果结束
端接头
受保护的子产品\u PageIndexChanging(发送方作为对象,e作为GridViewPageEventArgs)
gvProducts.PageIndex=e.NewPageIndex
BindProds()“”//更改页面索引时绑定
端接头
私有子BindProds()
将cnn用作新数据.SqlClient.SqlConnection(ConfigurationManager.ConnectionString(“NorthwindCnn”).ConnectionString)
使用cmd作为新数据.SqlClient.SqlCommand(“从Products.CategoryID=Categories.CategoryID”上的产品内部联接类别中选择Products.ProductID、Products.ProductName、Products.CategoryID、Categories.CategoryName”,cnn)
将da作为新数据Dim.SqlClient.SqlDataAdapter(cmd)
Dim dt作为新数据。DataTable()
da.填充(dt)
da.Dispose()
gvProducts.DataSource=dt
gvProducts.DataBind()
终端使用
终端使用
端接头

代码是
VB.NET
。我希望OP能把它翻译成
C#

没有
GridView
的绑定方法,所以我提供了两种方法(都有效)
方法1:与
SqlDataSource的声明性绑定

<form id="form1" runat="server">
    <%--ScriptManager required by UpdatePanel --%>
    <asp:ScriptManager runat="server" ID="sm" />
<div>
    <asp:UpdatePanel runat="server" UpdateMode="Conditional">
        <ContentTemplate>
    <asp:GridView ID="gvProducts" runat="server" AutoGenerateColumns="False" AllowPaging="true" PageSize="5" DataKeyNames="ProductID" DataSourceID="sqlNWind">
        <Columns>
            <asp:BoundField DataField="ProductID" HeaderText="ProductID" SortExpression="ProductID" />
            <asp:BoundField DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" />
            <asp:TemplateField HeaderText="CategoryName" SortExpression="CategoryName">
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("CategoryName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
    <%--Triggers are redundant because GridView is inside the UpdatePanel --%>
        </ContentTemplate>
    </asp:UpdatePanel>
    <asp:SqlDataSource ID="sqlNWind" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindCnn %>"
        SelectCommand="SELECT Products.ProductID, Products.ProductName, Products.CategoryID, Categories.CategoryName FROM Products INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID">
    </asp:SqlDataSource>
</div>
</form>

不需要代码隐藏

方法2:从代码隐藏绑定:

.aspx
<form id="form1" runat="server">
    <asp:ScriptManager runat="server" ID="sm" />
<div>
    <asp:UpdatePanel runat="server" UpdateMode="Conditional">
        <ContentTemplate>
    <asp:GridView ID="gvProducts" runat="server" OnPageIndexChanging="gvProducts_PageIndexChanging" AutoGenerateColumns="False" AllowPaging="true" PageSize="5" DataKeyNames="ProductID">
        <Columns>
            <asp:BoundField DataField="ProductID" HeaderText="ProductID" InsertVisible="False" ReadOnly="True" SortExpression="ProductID" />
            <asp:BoundField DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" />
            <asp:TemplateField HeaderText="CategoryName" SortExpression="CategoryName">
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("CategoryName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

        </ContentTemplate>
    </asp:UpdatePanel>
</div>
</form>

.aspx.vb

Private Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
        BindProds()''//Bind initial
    End If
End Sub
Protected Sub gvProducts_PageIndexChanging(sender As Object, e As GridViewPageEventArgs)
    gvProducts.PageIndex = e.NewPageIndex
    BindProds()''//Bind when pageIndex changing
End Sub

Private Sub BindProds()
    Using cnn As New Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("NorthwindCnn").ConnectionString)
        Using cmd As New Data.SqlClient.SqlCommand("SELECT Products.ProductID, Products.ProductName, Products.CategoryID, Categories.CategoryName FROM Products INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID", cnn)
            Dim da As New Data.SqlClient.SqlDataAdapter(cmd)
            Dim dt As New Data.DataTable()
            da.Fill(dt)
            da.Dispose()
            gvProducts.DataSource = dt
            gvProducts.DataBind()
        End Using
    End Using
End Sub
.aspx
.aspx.vb
私有子页加载(发送者作为对象,e作为事件参数)处理Me.Load
如果不是Page.IsPostBack,则
BindProds()“”//绑定初始值
如果结束
端接头
受保护的子产品\u PageIndexChanging(发送方作为对象,e作为GridViewPageEventArgs)
gvProducts.PageIndex=e.NewPageIndex
BindProds()“”//更改页面索引时绑定
端接头
私有子BindProds()
将cnn用作新数据.SqlClient.SqlConnection(ConfigurationManager.ConnectionString(“NorthwindCnn”).ConnectionString)
使用cmd作为新数据.SqlClient.SqlCommand(“从Products.CategoryID=Categories.CategoryID”上的产品内部联接类别中选择Products.ProductID、Products.ProductName、Products.CategoryID、Categories.CategoryName”,cnn)
将da作为新数据Dim.SqlClient.SqlDataAdapter(cmd)
Dim dt作为新数据。DataTable()
da.填充(dt)
da.Dispose()
gvProducts.DataSource=dt
gvProducts.DataBind()
终端使用
终端使用
端接头

代码是
VB.NET
。我希望OP能把它翻译成
C

显示你的
getdata
code@Webruster我已经编辑了我的问题。
DLBqt.selectBante
code?这是一个简单的方法,可以运行
select
语句从数据库中获取记录并返回数据表。@Webruster我已经编辑了问题。显示
getdata
code@Webruster我已经编辑了我的问题。
DLBqt.selectBante
code?这是一个简单的方法,可以运行
select
语句从数据库中获取记录并返回数据表。@Webruster我已经编辑了问题。@Asif.Ali请更新您的问题,更新后
asp:GridView
没有
AutoPostBack
属性。@AlexKudryashev谢谢,修改了我的答案,我忽略了it@Asif.Ali请更新您的问题,更新后
asp:GridView
没有
AutoPostBack
属性。@AlexKudryashev谢谢,修改了我的答案,我忽略了它