【问题标题】:Why does GridView not showing data on Paging Index Changed?为什么 GridView 不显示 Paging Index Changed 上的数据?
【发布时间】:2017-06-24 06:42:05
【问题描述】:

我有一个 GridView,当我单击“生成”按钮时,它会显示特定的数据和记录。

我的问题是,当我单击 GridView 列表的下一页时,Gridview 会丢失,我认为数据也不会丢失,我猜 GridView 只是没有显示它。

你能帮我解决这个问题吗?我不是第一个创建这个网站的人,我尝试了我所知道的所有方法来解决这个问题,我也在互联网上搜索了一个没有运气的解决方案。所以希望有人能告诉我为什么点击下一页后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 数据列表,但是当点击生成按钮时它是这样的

或者像这样

请帮我解决这个问题。非常感谢。

更新

好的,我把这段代码放在 Page_Load 中

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

然后我把GridView1.Visible = True 放到GridView1_PageIndexChanging 上,当我点击下一页时,它只显示没有找到记录,即使它已经获取了数据。

【问题讨论】:

    标签: asp.net vb.net gridview page-index-changed


    【解决方案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 用于在单击下一页时显示记录。

    【讨论】:

      猜你喜欢
      • 2014-09-27
      • 2018-01-17
      • 1970-01-01
      • 2015-12-08
      • 1970-01-01
      • 2019-08-01
      • 1970-01-01
      • 2013-09-25
      相关资源
      最近更新 更多