У меня есть динамический gridview с подкачкой страниц. Я хочу загрузить данные на основе индекса страницы.
У меня есть gridview, в котором текстовые поля и выпадающие списки будут генерироваться динамически.
Если у меня есть 10000 записей, то он загружает 10000 записей. Но я этого не хочу.
Мне нужно получить записи, основанные на индексе страницы. Если бы я был на странице 1, он должен был бы получить и загрузить данные от 1 до 50 записей, а если бы я был на странице 3, он должен был бы получить и загрузить от 100 до 150 таких данных.
Как я могу этого достичь? Пожалуйста, предложите.
Что я уже пробовал:
Это вид сетки, который я определил, и я установил свойство allo paging true.
<asp:GridView ID="gvDUSrqst" runat="server" AutoGenerateColumns="False" OnRowDataBound="OnRowDataBound" GridLines="Vertical" BorderColor="White" AllowPaging = "true" PageSize="50"> <HeaderStyle BackColor="#009530" CssClass="lblClsGridHdr" HorizontalAlign="Center" /> <RowStyle Font-Names="Arial" Font-Size="8pt" ForeColor="#009530" /> </asp:GridView>
Это код изменения индекса моей страницы.
Protected Sub OnPageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs) Handles gvDUSrqst.PageIndexChanging gvDUSrqst.PageIndex = e.NewPageIndex btnSaveDUS_Click(btnSaveDUS, e) Me.BindGrid() End Sub
Это метод биндгрида.
Private Sub BindGrid() Dim dt As New DataTable() Dim i As Integer = 0 Dim fld As String = "" Sql = "SELECT FIELD,CASE WHEN FIELD='MATNR' THEN 'X' WHEN TASK_CODE='" & lblTsk.Text & "' THEN 'Y' ELSE 'Z' END FROM TABLE1 where ETCODE=" & "'" & lbletcode.Text & "'" & " AND TECODE=" & "'" & lbltecode.Text & "'" & " ORDER BY 2,TASK_CODE,SEQ" Using OracleConnect As New OracleConnection(OraConString) OracleConnect.Open() dt = New DataTable() cmdOra = New OracleCommand(Sql, OracleConnect) rdrOra = cmdOra.ExecuteReader dt.Load(rdrOra) For i = 0 To dt.Rows.Count - 1 If i = 0 Then fld = dt.Rows(0).Item(0) Else fld = fld & "," & dt.Rows(i).Item(0) End If Next dt.Dispose() Sql = "SELECT " & fld & " FROM TABLE2 WHERE WFCODE='" & lblWFCode.Text & "'" 'Sql = "SELECT * FROM (SELECT " & fld & ", ROWNUM R FROM " & ViewState("TABLE_NAME") & " WHERE WFCODE='" & lblWFCode.Text & "') where r>" & ViewState("pageindex") & " and r<" & ViewState("pageindex") + 51 & "" dt = New DataTable cmdOra = New OracleCommand(Sql, OracleConnect) rdrOra = cmdOra.ExecuteReader dt.Load(rdrOra) If dt.Rows.Count > 0 Then gvDUSrqst.DataSource = dt gvDUSrqst.DataBind() End If OracleConnect.Close() End Using End Sub