juza66
پنج شنبه 20 شهریور 1393, 18:02 عصر
سلام دوستان
صفحه بندی دیتاگرید ویو
من قبلا با ADO - LINQ و دستی برای دیتابیس SQL صفحه بندی ساخته بودم
یک برنامه کوچک دارم می نویسم نیازی به اس کیو ال ندارم می خواستم با اکسس اینکار رو انجام بدم
تا حدی جلو رفتم با دستورات اس کیو ال قبلی، تویی نمایش اول 10 ایتم صفحه اول رو نشون میده ولی می خوام دکمه بعدی عمل نمیکنه در صورتی که با دستورات SQL براحتی اجرا میشه!!
OleDbConnection con;
private OleDbCommand cmd1;
private OleDbCommand cmd2;
private OleDbDataAdapter adp;
DataSet ds;
private int pagesize = 10;
private int currentpageindex = 1;
private int Totalpage = 0;
private void Form1_Load(object sender, EventArgs e)
{
con = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Application.StartupPath + "\\dbsedaghat.mdb;Persist Security Info=False;Jet OLEDB:Database Password=@@ESI@@ALI@@");
cmd1 = new OleDbCommand("Select * from tblbimar order by id", con);
ds = new DataSet();
adp = new OleDbDataAdapter(cmd1);
adp.Fill(ds, "tblbimar");
DWG1.DataSource = ds;
DWG1.DataMember = "tblbimar";
this.calculateTotalpages();
this.DWG1.ReadOnly = true;
this.DWG1.DataSource = Getcurrentrecords(1, con);
}
private void calculateTotalpages()
{
int rowcount = ds.Tables["tblbimar"].Rows.Count;
this.Totalpage = rowcount / pagesize;
if (rowcount % pagesize > 0)
{
this.Totalpage += 1;
}
}
private DataTable Getcurrentrecords(int page, OleDbConnection con)
{
DataTable dt = new DataTable();
if (page == 1)
{
cmd2 = new OleDbCommand(" Select TOP " + pagesize + " * FROM tblbimar ORDER BY id ", con);
}
else
{
int previouspagelimit = (page-1)*pagesize;
cmd2=new OleDbCommand(" Select TOP " + pagesize + " * form tblbimar " + " WHERE id NOT IN " +
"(Select TOP " + previouspagelimit + " id from tblbimar ORDER BY id)",con);
}
try
{
this.adp.SelectCommand=cmd2;
this.adp.Fill(dt);
}
finally
{
con.Close();
}
return dt;
}
دکمه NEXT
if (this.currentpageindex < this.Totalpage)
{
this.currentpageindex++;
this.DWG1.DataSource = Getcurrentrecords(this.currentpageindex, con);
}
نمایش 10 آیتم اول درست انجام میشه
ولی وقتی Next رو میزنم خطا میده که دستورات cmd2 در شرط بعدی قابل اجرا نیست!!
کسی هست ایراد رو تشخیص بده و حل کنه؟!!
تشکر
لینک دانلود سورس
http://charp.persiangig.com/DataGrildView_Page.rar
صفحه بندی دیتاگرید ویو
من قبلا با ADO - LINQ و دستی برای دیتابیس SQL صفحه بندی ساخته بودم
یک برنامه کوچک دارم می نویسم نیازی به اس کیو ال ندارم می خواستم با اکسس اینکار رو انجام بدم
تا حدی جلو رفتم با دستورات اس کیو ال قبلی، تویی نمایش اول 10 ایتم صفحه اول رو نشون میده ولی می خوام دکمه بعدی عمل نمیکنه در صورتی که با دستورات SQL براحتی اجرا میشه!!
OleDbConnection con;
private OleDbCommand cmd1;
private OleDbCommand cmd2;
private OleDbDataAdapter adp;
DataSet ds;
private int pagesize = 10;
private int currentpageindex = 1;
private int Totalpage = 0;
private void Form1_Load(object sender, EventArgs e)
{
con = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Application.StartupPath + "\\dbsedaghat.mdb;Persist Security Info=False;Jet OLEDB:Database Password=@@ESI@@ALI@@");
cmd1 = new OleDbCommand("Select * from tblbimar order by id", con);
ds = new DataSet();
adp = new OleDbDataAdapter(cmd1);
adp.Fill(ds, "tblbimar");
DWG1.DataSource = ds;
DWG1.DataMember = "tblbimar";
this.calculateTotalpages();
this.DWG1.ReadOnly = true;
this.DWG1.DataSource = Getcurrentrecords(1, con);
}
private void calculateTotalpages()
{
int rowcount = ds.Tables["tblbimar"].Rows.Count;
this.Totalpage = rowcount / pagesize;
if (rowcount % pagesize > 0)
{
this.Totalpage += 1;
}
}
private DataTable Getcurrentrecords(int page, OleDbConnection con)
{
DataTable dt = new DataTable();
if (page == 1)
{
cmd2 = new OleDbCommand(" Select TOP " + pagesize + " * FROM tblbimar ORDER BY id ", con);
}
else
{
int previouspagelimit = (page-1)*pagesize;
cmd2=new OleDbCommand(" Select TOP " + pagesize + " * form tblbimar " + " WHERE id NOT IN " +
"(Select TOP " + previouspagelimit + " id from tblbimar ORDER BY id)",con);
}
try
{
this.adp.SelectCommand=cmd2;
this.adp.Fill(dt);
}
finally
{
con.Close();
}
return dt;
}
دکمه NEXT
if (this.currentpageindex < this.Totalpage)
{
this.currentpageindex++;
this.DWG1.DataSource = Getcurrentrecords(this.currentpageindex, con);
}
نمایش 10 آیتم اول درست انجام میشه
ولی وقتی Next رو میزنم خطا میده که دستورات cmd2 در شرط بعدی قابل اجرا نیست!!
کسی هست ایراد رو تشخیص بده و حل کنه؟!!
تشکر
لینک دانلود سورس
http://charp.persiangig.com/DataGrildView_Page.rar