2017-02-07 9 views
1

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

GridView Showing Records

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

Index Changed

Можете ли вы помочь мне с этой проблемой. Я не тот, кто сначала создал этот сайт, и я пробовал все, что я знаю для этой проблемы, я также искал решения в Интернете без везения. Поэтому я надеюсь, что кто-то скажет мне, почему 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 список данных, когда я нажимаю на следующей странице, но при нажатии на кнопку Создать это как этот

Generate1

или как это

Generate2

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

UPDATE

Хорошо, так я ставлю этот код в 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 для показа записывать, когда нажав на следующую страницу.