2010-02-25 123 views
0

我已經通過哦這麼多的教程,我只是無法得到這個權利。我試圖根據存儲過程的結果填充gridview。我現在可能是盲目的代碼,但我確實試圖確保我沒有陷入小事。ASP.NET的GridView + DataSource + SQLDataReader的愚蠢問題

這是存儲過程:

ALTER PROCEDURE dbo.GetAllPlayersFromGame 

(
@gameID int 
)AS 
/* SELECT all the players within a game */ 

SELECT playerName FROM Player WHERE gameID = @gameID 

這是我使用創建一個數據表,然後我作爲數據源爲GridView使用的代碼:

 public static DataTable PopulateGridView(string resultSetQuery) 
    { 
     //Populate gridview 
     OpenConnection(); 
     SqlCommand sqlCommand = new SqlCommand(resultSetQuery, _sqlConnection); 

     SqlDataReader reader = sqlCommand.ExecuteReader(); 

     DataTable dataTable = new DataTable(); 
     dataTable.Load(reader); 
     return dataTable; 
    } 

這是該方法該調用一切,並應該填充gridview:

protected void ShowPlayersInGame() 
{ 

    GridViewShowPlayersInGame.DataSource = CreateDatabaseConnection.PopulateGridView("EXEC GetAllPlayersFromGame " + _gameId); 
    GridViewShowPlayersInGame.DataBind(); 
} 

當我調試我se e讀取器對象中的所有數據,以便存儲過程起作用。但是當它到達ShowPlayersInGame時會發生什麼,因爲gridview不會接收數據。我可能錯過了一些基本的東西,因爲我之前沒有使用過GridView。

任何想法?

+0

GridView是否在您自己的CreateChildControls方法的自定義控件中? – Patrick 2010-02-25 10:36:22

+0

Ehm ..如果這是當我從一個母版頁生成一個頁面,然後也許會發生的事情。我不知道這意味着什麼,所以我不確定。我怎樣才能澄清這一點? – Phil 2010-02-25 13:35:52

+0

這個問題的答案是否定的。網格視圖位於從母版頁派生的內容頁中的contentplaceholder中。它也在一個updatepanel(Ajax)中。沒有自定義控件。 – Phil 2010-02-25 14:20:11

回答

1

所以..這是一個愚蠢的問題。

<asp:GridView ID="GridViewShowPlayersInGame" runat="server" 
    AutoGenerateColumns="True" > 
</asp:GridView> 

AutoGenerateColumns="False"

現在按預期工作。感謝您閱讀這個雖然!