的GridView PageIndexChanging事件是不是里面的UpdatePanel

问题描述:

射击我还没有发现我的问题的任何解决方案:的GridView PageIndexChanging事件是不是里面的UpdatePanel

GridView的寻呼事件时,它是一个UpdatePanel内gvBanquet_PageIndexChanging不点火。

由于问题的代码是在这里:

<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> 

这里是一个寻呼事件:

protected void gvBanquet_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    gvBanquet.PageIndex = e.NewPageIndex; 

    // fill and bind gridview here 
} 

我添加了一个破发点,但其不点火。

enter image description here

我怎么能火分页按钮?

enter image description here

+0

显示你的'getdata'代码 – Webruster

+0

@Webruster我编辑了我的问题。 – AsifAli72090

+0

'DLBqt.SelectBanquet'代码? – Webruster

一个可能的情况下,没有看到你的getdata代码是:

你应该阅读这是用来加载gridview的数据集(你的情况的数据表),每次你的页面索引被改变。通过这种方式,您可以确保在由gridview页码触发的每个单独回发中,结果都将被填充。

更新

尝试添加触发器

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

它似乎不工作:( – AsifAli72090

+0

@ Asif.Ali请更新您的问题,更新后 – Webruster

+0

'asp:GridView'没有'AutoPostBack'属性 –

还有就是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 

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