aspnetpager在使用强类型的数据集的问题。vs2005中,我在吴老师的留言簿上留了言,可是吴老师还没说清楚。
vs2005中,原来我是这样用的aspnetpager,这样也能用,使用access数据库
protected void Page_Load(object sender, EventArgs e)
{
conn = new OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + this.Server.MapPath( "App_Data/NWIND.mdb "));
if (!Page.IsPostBack)
{
cmd = new OleDbCommand( "select count(EmployeeID) from Employees ", conn);
conn.Open();
pager.RecordCount = (int)cmd.ExecuteScalar();
conn.Close();
BindData();
}
}
void BindData()
{
cmd = new OleDbCommand( "select EmployeeID,LastName,FirstName from Employees ", conn);
OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds, pager.PageSize * (pager.CurrentPageIndex - 1), pager.PageSize, "Employees ");
GridView1.DataSource = ds.Tables[ "Employees "];
GridView1.DataBind();
pager.CustomInfoText = "记录总数: <font color=\ "blue\ "> <b> " + pager.RecordCount.ToString() + " </b> </font> ";
pager.CustomInfoText += " 总页数: <font color=\ "blue\ "> <b> " + pager.PageCount.ToString() + " </b> </font> ";
pager.CustomInfoText += " 当前页: <font color=\ "red\ "> <b> " + pager.CurrentPageIndex.ToString() + " </b> </font> ";
}
但现在我用vs2005的强类型的生成的数据集
emploeesDataSet2TableAdapters.EmployeesTableAdapter ta = new emploeesDataSet2TableAdapters.EmployeesTableAdapter();
ta有ta.ScalarQuery()这样方法得到总记录数,
也有ta.GetData()得到整个数据集。
但我不知如何编写BindData()函数了。
主要是这几句如何改成用ta.GetData()就方便了。主要是ta.GetData()是得到所有数据,没有过滤掉不显示的数据。全部都显示出来了。
cmd = new OleDbCommand( "select EmployeeID,LastName,FirstName from Employees ", conn);
OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds, pager.PageSize * (pager.CurrentPageIndex - 1), pager.PageSize, "Employees ");
GridView1.DataSource = ds.Tables[ "Employees "];
[解决办法]
还没有用过DataTableAdapter,这个也应该可以填充数据集吧?这样的话就和原来没有区别,不过填充的是你自己声明的强类型的数据集而已,你用GetData()方法取的是所有数据,无法实现过滤,那就无法实现分页效果了
[解决办法]
vs2005中有个PagedDataSource,也没用熟,不知道这个是否可以用在其中。
===============>
可以,看我的示例,很多地方就是用这个类实现分页的