Первая страница Gridview показывает записи, но вторая страница пуста при изменении индекса страницы?
У меня есть GridView, который показывает определенные данные и записи, когда я нажимаю кнопку Generate.
Моя проблема заключается в том, что когда я нажимаю на следующую страницу списка GridView, Gridview будет потерян (пустой), я не думаю, что данные тоже будут потеряны, я думаю, что GirdView просто не показывает их.
Не могли бы вы помочь мне с этой проблемой? Я не тот, кто первым создал этот сайт, и я перепробовал все, что я знаю для этой проблемы, я также искал решения в интернете, но безуспешно. Поэтому я надеюсь, что кто-то может сказать мне, почему GridView не отображается после нажатия на следующую страницу.
Вот код для загрузки страницы
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
Что я уже пробовал:
Сначала я попробовал поставить
GridView1.Visible = Trueв GridView1_PageIndexChanging и результат GridView с данными будет отображаться, и когда я нажимаю на следующую страницу, он показывает, что запись не найдена.
Я также попытался поместить этот код в Page_Load
If ViewState.Item("Query") <> Nothing Then BindGridview(ViewState.Item("Query"), ViewState.Item("CountQuery")) End If
В результате, когда я сначала нажимаю кнопку Generate, данные отображаются в GridView, а также когда я нажимаю на следующую страницу, но когда я выбираю другой элемент в раскрывающемся списке и снова нажимаю кнопку Generate, данные снова теряются (пустые).
F-ES Sitecore
У вас включено состояние просмотра gridview? Если вы это сделаете, я не думаю, что вам нужно повторно привязывать то, как вы находитесь в событии изменения страницы, а если вы этого не сделаете, то представление сетки не будет иметь источника данных при обратной передаче, поскольку оно не сохраняется. Вместо того чтобы получать данные из GridView1.DataSource, вам нужно повторно привязать данные из базы данных так же, как вы это делаете в событии load.you.
RKeyy Sii
Извините за поздний ответ, я не был в сети в течение последних нескольких дней.
У меня есть состояние просмотра gridview, включенное как false, и gridview будет потерян, когда я нажму на следующую страницу, а когда я включил его как true, он показывает, что запись не найдена. Можете ли вы сказать мне, что я могу сделать для этого? Спасибо.