【发布时间】:2011-01-20 22:54:40
【问题描述】:
我已经学习了很多教程,但我就是无法正确地做到这一点。我正在尝试根据存储过程的结果填充网格视图。我现在可能是代码盲,但我真的试图确保我没有搞砸一些小事情。
这是存储过程:
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();
}
当我调试时,我会看到读取器对象中的所有数据,因此存储过程可以正常工作。但是当它到达 ShowPlayersInGame 时会发生一些事情,因为 gridview 不会获取数据。我可能错过了一些基本的东西,因为我以前没有经常使用网格视图。
有什么想法吗?
【问题讨论】:
-
GridView 是否在自定义控件中使用您自己的 CreateChildControls 方法?
-
Ehm.. 如果我从母版页生成页面时可能会发生这种情况。我不知道这真正意味着什么,所以我不确定。我该如何澄清这一点?
-
这个问题的答案是否定的。网格视图位于从母版页派生的内容页中的内容占位符中。它也在更新面板(Ajax)中。没有自定义控件。