2013-07-30 1 views
0

J'ai un GridView ASP.NET qui n'est pas rempli avec de nouvelles lignes à partir d'un remplissage VB.NET. L'incarnation la plus récente du code que je travaille avec est la suivante:ASP.NET GridView vide après remplissage dynamique à partir de VB.NET

Protected Sub uGV(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnQuery.Click 
    Dim rFm As DateTime = DateTime.Parse(calFrom.SelectedDate.Date.ToString) 
    Dim rTo As DateTime = DateTime.Parse(calTo.SelectedDate.Date.ToString) 
    Dim oleUpConnString As String = ConfigurationManager.ConnectionStrings("OLEDBConnectionStringtoSQL").ConnectionString 
    Dim oleUpConn As New OleDbConnection() 
    oleUpConn.ConnectionString = oleUpConnString 
    oleUpConn.Open() 
    Dim vUp As New OleDbDataAdapter() 
    Dim upCmd As String = "SELECT * FROM mail WHERE (date BETWEEN '07/02/2013' AND '07/04/2013')" 
    Dim dsUp As New DataSet() 
    Dim dt As New DataTable("Table1") 
    Dim upCmdEx As New OleDbCommand(upCmd, oleUpConn) 
    With upCmdEx.Parameters 
     .AddWithValue("?", rFm) 
     .AddWithValue("?", rTo) 
    End With 
    Try 
     vUp.SelectCommand = upCmdEx 
    Catch ex As Exception 
     MsgBox("The select command failed") 
    End Try 
    Try 
     Me.GridView2.DataSource = dsUp.Tables(0) 
     vUp.Fill(dsUp) 
    Catch ex As Exception 
     MsgBox("Filling the dataset failed") 
    End Try 
    Me.GridView2.DataSource = dsUp 
    'Me.GridView2.DataBind() 
    oleUpConn.Close() 
End Sub 

J'ai passé plusieurs heures sur cela sans une résolution, donc si quelqu'un pouvait identifier ce que j'ai manqué serait grandement apprécié.

EDIT - GridView est codé comme suit:

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="True" 
        BackColor="White" CaptionAlign="Top" 
        CellPadding="4" ForeColor="#333333" 
        GridLines="None" Caption="Surveys Completed"> 
        <RowStyle BackColor="#EFF3FB" /> 
        <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
        <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
        <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
        <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
        <EditRowStyle BackColor="#2461BF" /> 
        <AlternatingRowStyle BackColor="White" /> 
       </asp:GridView> 
+0

Veuillez afficher le balisage de votre GridView. –

+0

Balisage ajouté, il a le DataSourceID supprimé afin de ne pas entrer en conflit avec le code derrière. – RGS

+0

Pourquoi avez-vous commenté l'appel DataBind()? N'avez-vous pas besoin de ça pour le faire fonctionner? –

Répondre

0

Après un long laps de temps, voici l'incarnation finale du code derrière pour une fonction Dynamic View pour un GridView qui sera mise à jour en temps réel sans actualisation de page requise.

Protected Sub uGV(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnQuery.Click 
    Dim rFm As String = String.Empty 
    Dim rTo As String = String.Empty 
    rFm = calFrom.SelectedDate.Date.ToString 
    rTo = calTo.SelectedDate.Date.ToString 
    Dim oleUpConn As OleDbConnection = New OleDbConnection(ConfigurationManager.ConnectionStrings("OLEDBConnectionStringtoSQL").ConnectionString) 
    Dim vUp As OleDbDataAdapter = New OleDbDataAdapter 
    Dim selectSQL As String = "SELECT * FROM mail WHERE (date BETWEEN ? AND ?)" 
    Dim upCmdEx As OleDbCommand = New OleDbCommand(selectSQL, oleUpConn) 
    vUp.SelectCommand = upCmdEx 
    upCmdEx.Parameters.AddWithValue("@FROMDATE", rFm) 
    upCmdEx.Parameters.AddWithValue("@TODATE", rTo) 
    Dim dsUp As DataSet = New DataSet 
    vUp.Fill(dsUp, "DynamicView") 
    If dsUp.Tables("DynamicView").Rows.Count > 0 Then 
     GridView2.DataSource = dsUp.Tables("DynamicView") 
     GridView2.DataBind() 
    Else 
     MsgBox("Nothing to display for the selected date range. Please select a new date range and try again.") 
     Exit Sub 
    End If 
End Sub 
0

Sans voir votre code, alors je vais deviner que vous avez soit pas encore défini AutoGenerateColumns attribut du GridView « True » ou vous n'avez pas défini Dans la structure de votre GridView.

Pour avoir le GridView afficher automatiquement toutes les colonnes (ainsi que les noms) de la source de données, puis procédez comme suit:

<asp:GridView id="GridView2" runat="server" AutoGenerateColumns="True" /> 

Pour avoir plus de contrôle sur les colonnes que vous voulez afficher et/ou quel en-tête les noms des colonnes ont, faites ceci:

<asp:GridView id="GridView2" runat="server"> 
    <Columns> 
     <asp:boundfield datafield="CustomerID" headertext="Customer ID" /> 
     <asp:boundfield datafield="CompanyName" headertext="Company Name"/> 
     <asp:boundfield datafield="Address" headertext="Address"/> 
     <asp:boundfield datafield="City" headertext="City"/> 
     <asp:boundfield datafield="PostalCode" headertext="Postal Code"/> 
     <asp:boundfield datafield="Country" headertext="Country"/> 
    </Columns> 
</asp:GridView> 

note: Il est évident que les boundfield s sont composés dans cet exemple et vous pouvez faire correspondre les noms à vos champs de données.

+0

J'ai raté la partie 'AutoGenerateColumns =" ​​Vrai "', merci pour ce Karl. Mon code ne fonctionne toujours pas correctement. – RGS

Questions connexes