为什么 GridView 不显示 Paging Index Changed 上的数据?
Why does GridView not showing data on Paging Index Changed?
我有一个 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数据列表,点击生成按钮时是这样的
或者像这样
请帮我解决这个问题。非常感谢。
更新
好的,所以我把这段代码放在 Page_Load
If ViewState.Item("Query") <> Nothing Then
BindGridview(ViewState.Item("Query"), ViewState.Item("CountQuery"))
End If
然后我将 GridView1.Visible = True
放入 GridView1_PageIndexChanging
,当我点击下一页时,即使它已经获取了数据,它仍然显示没有找到记录。
我做这件事已经有一段时间了,谢天谢地我已经做了。
我花了很多不同的方法和解决方案,但对我没有任何帮助,但谢天谢地,现在这个是正确的。
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
中用于在单击下一页时显示记录。
我有一个 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数据列表,点击生成按钮时是这样的
或者像这样
请帮我解决这个问题。非常感谢。
更新
好的,所以我把这段代码放在 Page_Load
If ViewState.Item("Query") <> Nothing Then
BindGridview(ViewState.Item("Query"), ViewState.Item("CountQuery"))
End If
然后我将 GridView1.Visible = True
放入 GridView1_PageIndexChanging
,当我点击下一页时,即使它已经获取了数据,它仍然显示没有找到记录。
我做这件事已经有一段时间了,谢天谢地我已经做了。 我花了很多不同的方法和解决方案,但对我没有任何帮助,但谢天谢地,现在这个是正确的。
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
中用于在单击下一页时显示记录。