这是关于myIdea-project-during-worktime项目。我正在使用ObjectDataSource来填充GridView。出于某种原因,“页面”部分(应该位于网格的底部)不会出现。我在这里查看了其他类似问题的答案,但未能弄清楚我的代码出了什么问题。
GridView看起来像这样:
<asp:GridView ID="GridView1"
runat="server"
AllowPaging="True"
PageSize="10"
AutoGenerateColumns="False"
DataKeyNames="rowid"
DataSourceID="PopulateGridView">
........
</asp:GridView>
GridView正在使用ObjectDataSource“PopulateGridView”。 “PopulateGridView”看起来像这样:
<asp:ObjectDataSource
ID="PopulateGridView"
runat="server"
TypeName="SurveyItemInfo"
SelectMethod="GetPagedData"
EnablePaging="True"
SelectCountMethod="GetRowCount"
StartRowIndexParameterName="startRow"
MaximumRowsParameterName="pageSize"
SortParameterName="sortColumns"
OnObjectCreated="SurveyItemInfo_ObjectCreated">
</asp:ObjectDataSource>
使用“GetPagedData”和“GetRowCount”等方法创建“SurveyItemInfo”类。 GetPagedData如下所示:
public DataTable GetPagedData(string sortColumns, int startRow, int pageSize)
{
// datatable
DataTable dt = new DataTable();
string sql;
// Create connection
SqlConnection con = new SqlConnection(_connectionString);
// Create command
sql = "";
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "dbo.epm_ListSurveyItemForReportPaged";
cmd.Parameters.AddWithValue("@reportid", reportid);
cmd.Parameters.AddWithValue("@startRow", startRow);
//cmd.Parameters.AddWithValue("@pageSize", pageSize);
cmd.Parameters.AddWithValue("@pageSize", 50);
// Execute command
using (con)
{
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
dt.Load(reader);
//reader.Close();
}
return dt;
}
我正在使用此方法的一个sproc来获取分页数据到网格。请注意,我已经注释掉了sproc获取页面大小(行数)的第3个参数的行。我在这里使用硬编码值来测试目的。
通过调试时我发现方法GetPagedData的参数startRow和pageSize的值为零。另外我不确定它,但不是ObjectdataSource的SelectCountMethod(GetRowCount)应该执行一次的方法吗?事实并非如此。
此方法具有以下代码:
public int GetRowCount()
{
using (SqlConnection conn = new SqlConnection(_connectionString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand("SELECT COUNT(1) FROM dbo.data_SurveyItem where reportid=" + reportid.ToString(), conn))
{
return (int)cmd.ExecuteScalar();
}
}
}
所以问题是数字页面链接浏览到不同的页面不会出现在GridView的底部。对于GridView和ObjectDataSource,都启用了分页和排序(虽然我没有使用排序)。我不确定我还缺少什么。 谢谢你的帮助。