2012-04-23 63 views
6

我添加一個GridView &,然後從SQL Server數據庫中顯示數據。問題在於GridView不顯示在瀏覽器中,有或沒有數據。ASP.NET中的GridView不顯示有或沒有數據

這裏是我的代碼:

<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

我想你忘了打電話'GridAllStore.DataBind()' – MilkyWayJoe 2012-04-23 21:48:53

+0

你要麼必須的AutoGenerateColumns設置爲請將列提供爲要顯示的Bound-或TemplateField。您必須以任何方式進行DataBind。 – 2012-04-23 21:50:00

+0

這是您的'GridView'的完整標記嗎? – 2012-04-23 21:50:09

回答

16

我認爲問題在於您沒有定義任何要顯示的列。當您將AutoGenerateColumns設置爲false時,您必須明確定義列。

要確保基本的工作集AutoGenerateColumns爲true:

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

隨着AutoGenerateColumns設置爲true,數據源分配的,DataBind()叫,你應該開始看到一些數據。一旦你開始看到數據,你可以定義你想要顯示的特定列。

既然你只需要在第一個頁面加載電網結合,利用!Page.IsPostBack條件:

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

解決了它。謝謝 。 :) – 2012-04-23 22:12:48

1

你有沒有嘗試設置數據源後,立即加入以下行?

GridAllStore.DataBind(); 
+0

是的,剛纔的,但仍然沒有工作 – 2012-04-23 21:53:10

+0

您是否確認在數據中有數據? – 2012-04-23 21:54:51

+0

是的,我檢查了 – 2012-04-23 21:56:43

2

你的代碼更改爲:

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

並改變你的GridView的標記來:

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

注意到,現在是AutoGenerateColumns="True",因爲這將顯示數據並生成列。您可能需要自定義顯示的內容。要做到這一點,既然您現在不知道自己在做什麼,請切換到設計視圖,然後編輯gridview模板。

看看這篇文章的一些幫助定製您輸出的列和數據。 http://msdn.microsoft.com/en-us/library/bb288032.aspx

+0

謝謝! :)我剛剛做到了。有效 。但我真的不知道如何刪除自動生成的列。你能幫我嗎 ? – 2012-04-23 22:06:01

+1

如果您在設計視圖模式開拓.aspx頁面中,您可以點擊GridView控件和編輯。它允許你選擇你想要顯示的列。或者,您可以使用自定義'TemplateFields'。也許看看這裏有一些幫助嗎? http://msdn.microsoft.com/en-us/library/bb288032.aspx – 2012-04-23 22:09:15

+0

感謝了很多人! :) – 2012-04-23 22:11:12