2012-04-23 3 views
6

Sto aggiungendo un GridView & quindi mostrando i dati in esso contenuti da un database SQL Server. Il problema è che GridView non viene visualizzato nel browser con o senza dati.GridView in ASP.NET non viene visualizzato con o senza dati

Qui è il mio codice:

<asp:GridView ID="GridAllStore" runat="server" AutoGenerateColumns="False" Width="100%" ViewStateMode="Enabled"> 

public partial class AdminPanel : System.Web.UI.Page 
{ 
    storelocatorDataSetTableAdapters.storedbTableAdapter tastore = new storelocatorDataSetTableAdapters.storedbTableAdapter(); 
    storelocatorDataSetTableAdapters.View_1TableAdapter taview = new storelocatorDataSetTableAdapters.View_1TableAdapter(); 

    List<storelocatorDataSet.storedbRow> lststore = new List<storelocatorDataSet.storedbRow>(); 
    List<storelocatorDataSet.View_1Row> lstview = new List<storelocatorDataSet.View_1Row>(); 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     lstview = taview.GetData().ToList(); 
     GridAllStore.DataSource = lstview; 
    } 
} 
+7

Credo che ti sei dimenticato di chiamare 'GridAllStore.DataBind()' – MilkyWayJoe

+0

Si sia necessario impostare AutoGenerateColumns a true ot fornisce le colonne come Bound- o TemplateFields che si desidera mostrare. È necessario DataBind irt in entrambi i casi. –

+0

È il tuo markup completo per il 'GridView'? –

risposta

16

Penso che il problema è che non sono state definite colonne da visualizzare. È necessario definire esplicitamente le colonne quando si imposta AutoGenerateColumns su falso.

Per assicurarsi che le basi sono working set AutoGenerateColumns true:

<asp:GridView ID="GridAllStore" runat="server" AutoGenerateColumns="true" Width="100%" ViewStateMode="Enabled"> 

Con AutoGenerateColumns impostata su true, l'origine dati assegnato, e DataBind() chiamato, si dovrebbe iniziare a vedere alcuni dati. Dopo aver iniziato a visualizzare i dati, è possibile definire le colonne specifiche che si desidera visualizzare.

Dal momento che avete solo bisogno di impegnare la griglia sulla prima caricamento della pagina, utilizzare la condizione !Page.IsPostBack:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     GridAllStore.DataSource = lstview; 
     GridAllStore.DataBind(); 
    } 
} 
+0

Risolto. Grazie . :) –

1

Hai provato aggiungendo seguente riga subito dopo aver impostato l'origine dati?

GridAllStore.DataBind(); 
+0

Sì. Proprio ora, ma ancora non funziona –

+0

Hai confermato di avere dati in lstview? –

+0

Sì. Ho controllato. –

2

modificare il codice per:

protected void Page_Load(object sender, EventArgs e) 
{ 
    lstview = taview.GetData().ToList(); 
    GridAllStore.DataSource = lstview; 
    GridAllStore.DataBind(); 
} 

e cambiare la marcatura GridView:

<asp:GridView ID="GridAllStore" runat="server" AutoGenerateColumns="True" Width="100%" ViewStateMode="Enabled" /> 

notato che ora è AutoGenerateColumns="True" come questo mostrerà i dati e generare le colonne. Potrebbe essere necessario personalizzare ciò che viene mostrato però. Per fare questo, dato che non sai davvero cosa stai facendo solo ora, passa alla visualizzazione del progetto e puoi modificare il modello di gridview.

Dai un'occhiata a questo post per un po 'di aiuto con la personalizzazione delle colonne e dei dati che hai prodotto. http://msdn.microsoft.com/en-us/library/bb288032.aspx

+0

Grazie! :) L'ho appena fatto. Ha funzionato . Ma davvero non ho idea di come rimuovere le colonne autogeneriate. Mi potete aiutare per favore ? –

+1

Se si apre la pagina .aspx in modalità visualizzazione struttura, è possibile fare clic sul controllo GridView e modificarlo. Ti permette di selezionare quali colonne vuoi visualizzare. In alternativa, puoi usare 'TemplateFields 'personalizzati. Forse dare un'occhiata qui per un aiuto con esso? http://msdn.microsoft.com/en-us/library/bb288032.aspx –

+0

Grazie mille amico! :) –