积极答复者
【ASP.NET】在没有数据集DataSet的情况下可以使用SQL语句进行查询吗?

问题
-
我利用DirectoryInfo类检索了网站某文档中的数据,并声明了DataTable构造了一个数据表,同时也添好了之前检索过来的数据。由于利用AspNetPager控件进行分页,肯定得和数据库打交道。现在问题来了,由于没有本例中没有用到数据集DataSet是否可以利用sql语句在已构造的DataTable中进行sql查询等操作呢?
其实我的目的是想获取分页最大记录和最小记录,根据以往的经验,这都是需要和sql数据库打交道的,如下面的语句。但是目前没有和数据库打交道,我应该如何来实现呢?先谢谢了!请指教!
int StarRecord = AspNetPager1.PageSize * (AspNetPager1.CurrentPageIndex - 1);
int MaxRecord = AspNetPager1.PageSize;
this.GridView1.DataSource = GetList(sql, StarRecord, MaxRecord).Tables["tb_product"];煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com
答案
-
楼主好:)
你的问题和http://social.msdn.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/a6d5bb3c-34a9-499c-9146-dda078a531ec/#a6d5bb3c-34a9-499c-9146-dda078a531ec很相似。我建议参考此代码:因为和数据库打交道,也就是把我以下的代码用SqlDataAdapter+DataTable来完成,最好用存储过程,这样传入起始页和每页最大的记录数即可。
/// <summary> /// 分页显示的数据 /// </summary> /// <param name="startIndex">从0开始</param> /// <param name="RowNumber">当前页最大可以显示的数据,下标为1</param> /// <returns></returns> public static DataTable SelectByPage(int StartRowIndex, int MaximumRows) { //此处使用存储过程分页方式,结果返回DataTable即可。 }
关于存储过程分页,您具体可以参考:
http://www.cnblogs.com/taewind/archive/2006/12/12/589131.html
感谢大家,这个问题已经得到解决。最后利用PageDataSource类解决了此问题。代码如下
DirectoryInfo di = new DirectoryInfo(Server.MapPath("~/uploads/"));
FileInfo[] fis = di.GetFiles();
if (fis.Length == 0)
{
DataControlEmpty();
}
else
{
DataTable dt = new DataTable("ftable");
dt.Columns.Add("imgurl", typeof(String));
dt.Columns.Add("filename", typeof(String));
dt.Columns.Add("filesize", typeof(String));
dt.Columns.Add("imgtype", typeof(String));
dt.Columns.Add("time", typeof(String));
foreach (FileInfo fi in fis)
{
DataRow dr = dt.NewRow();
dr[0] = this.ResolveUrl("~/uploads/") + fi.Name;
dr[1] = fi.Name;
dr[2] = fi.Length;
dr[3] = ImgType(fi.Extension.Substring(1));
dr[4] = fi.CreationTime;
dt.Rows.Add(dr);
}
PagedDataSource pds = new PagedDataSource();
pds.DataSource = dt.DefaultView;
pds.AllowPaging = true;
pds.PageSize = 9;//每页显示记录数
pds.CurrentPageIndex = this.AspNetPager1.CurrentPageIndex - 1;//当前页的页码,从0开始
this.AspNetPager1.RecordCount = di.GetFiles().Length;
this.DataList1.DataSource = pds;
this.DataList1.DataBind();}
这样看的话,AspNetPager1不是非要依赖数据适配器SQLDataApater。
煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com
- 已标记为答案 jinwb1982 2012年5月9日 17:18
全部回复
-
楼主好:)
你的问题和http://social.msdn.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/a6d5bb3c-34a9-499c-9146-dda078a531ec/#a6d5bb3c-34a9-499c-9146-dda078a531ec很相似。我建议参考此代码:因为和数据库打交道,也就是把我以下的代码用SqlDataAdapter+DataTable来完成,最好用存储过程,这样传入起始页和每页最大的记录数即可。
/// <summary> /// 分页显示的数据 /// </summary> /// <param name="startIndex">从0开始</param> /// <param name="RowNumber">当前页最大可以显示的数据,下标为1</param> /// <returns></returns> public static DataTable SelectByPage(int StartRowIndex, int MaximumRows) { //此处使用存储过程分页方式,结果返回DataTable即可。 }
关于存储过程分页,您具体可以参考:
http://www.cnblogs.com/taewind/archive/2006/12/12/589131.html
-
楼主好:)
你的问题和http://social.msdn.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/a6d5bb3c-34a9-499c-9146-dda078a531ec/#a6d5bb3c-34a9-499c-9146-dda078a531ec很相似。我建议参考此代码:因为和数据库打交道,也就是把我以下的代码用SqlDataAdapter+DataTable来完成,最好用存储过程,这样传入起始页和每页最大的记录数即可。
/// <summary> /// 分页显示的数据 /// </summary> /// <param name="startIndex">从0开始</param> /// <param name="RowNumber">当前页最大可以显示的数据,下标为1</param> /// <returns></returns> public static DataTable SelectByPage(int StartRowIndex, int MaximumRows) { //此处使用存储过程分页方式,结果返回DataTable即可。 }
关于存储过程分页,您具体可以参考:
http://www.cnblogs.com/taewind/archive/2006/12/12/589131.html
感谢大家,这个问题已经得到解决。最后利用PageDataSource类解决了此问题。代码如下
DirectoryInfo di = new DirectoryInfo(Server.MapPath("~/uploads/"));
FileInfo[] fis = di.GetFiles();
if (fis.Length == 0)
{
DataControlEmpty();
}
else
{
DataTable dt = new DataTable("ftable");
dt.Columns.Add("imgurl", typeof(String));
dt.Columns.Add("filename", typeof(String));
dt.Columns.Add("filesize", typeof(String));
dt.Columns.Add("imgtype", typeof(String));
dt.Columns.Add("time", typeof(String));
foreach (FileInfo fi in fis)
{
DataRow dr = dt.NewRow();
dr[0] = this.ResolveUrl("~/uploads/") + fi.Name;
dr[1] = fi.Name;
dr[2] = fi.Length;
dr[3] = ImgType(fi.Extension.Substring(1));
dr[4] = fi.CreationTime;
dt.Rows.Add(dr);
}
PagedDataSource pds = new PagedDataSource();
pds.DataSource = dt.DefaultView;
pds.AllowPaging = true;
pds.PageSize = 9;//每页显示记录数
pds.CurrentPageIndex = this.AspNetPager1.CurrentPageIndex - 1;//当前页的页码,从0开始
this.AspNetPager1.RecordCount = di.GetFiles().Length;
this.DataList1.DataSource = pds;
this.DataList1.DataBind();}
这样看的话,AspNetPager1不是非要依赖数据适配器SQLDataApater。
煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com
- 已标记为答案 jinwb1982 2012年5月9日 17:18