2017-02-01 60 views
1

我有一个GridView,当点击Generate按钮时显示特定的数据列表或报告。页面索引已更改。 GridView数据显示丢失

GridView Records

当我移动到GridView的下一个页面或当我点击下一页时,GridView结合变空,并没有显示出GridView控件列表。

Page Index Changed

这是我在.aspx

<asp:GridView ID="GridView1" 
    runat="server" 
    CellPadding="4" 
    HeaderStyle-ForeColor="White" 
    ForeColor="#333333" 
    GridLines="None" 
    CssClass="mGrid" 
    PagerStyle-CssClass="pgr" 
    AlternatingRowStyle-CssClass="alt" 
    RowStyle-CssClass="row" 
    AllowSorting="True" 
    AllowPaging="True" 
    PageSize="25" Visible="false" OnRowDataBound="GridView1_RowDataBound" 
    EnableViewState="false"> 
    <EmptyDataTemplate> 
     No record found. 
    </EmptyDataTemplate> 
</asp: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 

我希望你能帮助我与此有关。我似乎无法知道可能是什么问题。我尝试了不同的方法,并从互联网上找到解决方案,但没有帮助。非常感谢。

回答

1

您应该使用

GridView1.DataSource = DataSource 

这是从你的片段不清楚是什么DataSource是的,但你在BindGridview方法也使用它。

开始对变量使用不同的名称,将其命名为属性非常混乱,并且会导致错误。

更新

Dim source As SqlDataSource 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)  
    source = New SqlDataSource 
    source.ID = "mySource" 
    source.SelectCommand = "select * from table" 
    source.ConnectionString = connStr 

    If Not Page.IsPostBack Then 
     GridView1.DataSource = source 
     GridView1.DataBind 
    End If 

End Sub 

Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs) 
    GridView1.DataSource = source 
    GridView1.PageIndex = e.NewPageIndex 
    GridView1.DataBind 
End Sub 
+0

所以我需要把GridView1.DataSource =数据源在Page_Load中和GridView1_PageIndexChanging? @VDWWD – chorvaeklabu