Почему GridView не показывает данные в индексе подкачки?

У меня есть GridView, который показывает конкретные данные и записи, когда я нажимаю кнопку Создать.

GridView Отображение записей

Моя проблема в том, что когда я нажимаю на следующую страницу списка GridView, Gridview будет утерян, я не думаю, что данные тоже будут потеряны, я думаю, GirdView просто не показывает их.

Индекс изменен

Можете ли вы помочь мне с этой проблемой. Я не тот, кто первым создал этот сайт, и я попробовал все, что я знаю для этой проблемы, я также безуспешно искал решения в Интернете. Поэтому я надеюсь, что кто-то может сказать мне, почему GridView не отображается после нажатия на следующую страницу.

Вот код для Page_Load

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    userid = IIf(SessionHandler.UserID = "", User.Identity.Name.ToUpper, SessionHandler.UserID)

    V3Substance.Attributes.Add("onfocus", "javascript:if (this.value=='Substance Cas Number') { this.value = ''; }")
    V3Substance.Attributes.Add("onblur", "javascript:if (this.value=='') { this.value = 'Substance Cas Number'; }")

    If Not Page.IsPostBack Then
        V1Division.DataSource = GetDivision()
        V1Division.DataBind()

        V1BR.Items.Clear()
        V1BR.DataSource = GetBusinessRule(V1Division.Text)
        V1BR.DataBind()

        MultiView1.ActiveViewIndex = 0
        Panel1.DefaultButton = "V1Generate"
    End If
End Sub

Вот код для GridView1_PageIndexChanging

Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging
    Dim dt As DataTable = TryCast(GridView1.DataSource, DataTable)
    GridView1.DataSource = SortTable(dt)

    GridView1.PageIndex = e.NewPageIndex
    GridView1.DataBind()
End Sub

Вот код для BindGridView

Private Sub BindGridview(ByVal query As String, ByVal countquery As String)
    ViewState.Add("Query", query)
    ViewState.Add("CountQuery", countquery)

    Dim count As Integer = 0

    If Description.Text = "1" Then
        ValidateFamily(query)
    Else
        DataSource = dbHelper.GetRecordDT(query)
    End If

    count = DataSource.Rows.Count

    'GridView1.DataSource = Nothing
    'GridView1.DataBind()
    'GridView1.PageIndex = 0

    GridView1.DataSource = DataSource
    GridView1.Visible = True
    GridView1.DataBind()

    ExportToExcel.Visible = IIf(count < 1, False, True)
    Panel1.Visible = IIf(count < 1, False, True)
    SetTotalResult(count)
End Sub

Я также пытался поместить этот код в Page_Load

If ViewState.Item("Query") <> Nothing Then
    BindGridview(ViewState.Item("Query"), ViewState.Item("CountQuery"))
End If

Но результат также является проблемой, он показывает список данных GridView, когда я нажимаю на следующую страницу, но при нажатии кнопки Generate это выглядит так

Generate1

или как это

Generate2

Пожалуйста, помогите мне с этим. Огромное спасибо.

ОБНОВИТЬ

Итак, я поместил этот код в Page_Load

If ViewState.Item("Query") <> Nothing Then
    BindGridview(ViewState.Item("Query"), ViewState.Item("CountQuery"))
End If

Затем я положил GridView1.Visible = True в GridView1_PageIndexChanging и когда я нажимаю на следующую страницу, она показывает, что запись не найдена, даже если она уже извлекла данные.

1 ответ

Решение

Так что я уже давно занимаюсь этим и, к счастью, уже сделал это. Мне потребовалось много разных подходов и решений, которые мне совсем не помогли, но, к счастью, сейчас это правильно.

Код для Page_Load

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            userid = IIf(SessionHandler.UserID = "", User.Identity.Name.ToUpper, SessionHandler.UserID)

            V3Substance.Attributes.Add("onfocus", "javascript:if (this.value=='Substance Cas Number') { this.value = ''; }")
            V3Substance.Attributes.Add("onblur", "javascript:if (this.value=='') { this.value = 'Substance Cas Number'; }")

            If Not Page.IsPostBack Then
                V1Division.DataSource = GetDivision()
                V1Division.DataBind()

                V1BR.Items.Clear()
                V1BR.DataSource = GetBusinessRule(V1Division.Text)
                V1BR.DataBind()

                MultiView1.ActiveViewIndex = 0
                Panel1.DefaultButton = "V1Generate"

                If ViewState.Item("Query") <> Nothing Then
                    BindGridview(ViewState.Item("Query"), ViewState.Item("CountQuery"))
                End If
            End If
End Sub

Код для GridView1_PageIndexChanging

 Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging
            Dim dt As DataTable = TryCast(GridView1.DataSource, DataTable)
            GridView1.DataSource = SortTable(dt)

            GridView1.PageIndex = e.NewPageIndex
            'GridView1.DataBind()
            If ViewState.Item("Query") <> Nothing Then
                BindGridview(ViewState.Item("Query"), ViewState.Item("CountQuery"))
            End If
End Sub

я добавить

If ViewState.Item("Query") <> Nothing Then
                    BindGridview(ViewState.Item("Query"), ViewState.Item("CountQuery"))
                End If

в If Not Page.IsPOstBack для отображения записи при повторном выборе в DropDownList и в PageIndexChanging для отображения записи при нажатии на следующую страницу.

Другие вопросы по тегам