mjt10063
دوشنبه 06 خرداد 1392, 11:50 صبح
سلام دوستان من به یه مشکلی بر خوردم
ریپرتر رو با استفاده از کد زیر صفحه بندی میکنم
توی صفحه بندی مشکلی ندارم ولی موقع نمایش اطلاعات تصادفی به مشکل بر می خورم و احتمال اینکه توی صفحه بعدی هم مطالب تکراری ظاهر بشه خیلی زیاد
خواهشن کمک کنید باید چه کار کنم من
کد صفحه بندی :
private int LoadData()
{
//نمایش سوالات
SqlDataAdapter sda = new SqlDataAdapter("Select_Soal", scon);
sda.SelectCommand.CommandType = CommandType.StoredProcedure;
sda.SelectCommand.Parameters.AddWithValue("@k_dars", DropDownList1.SelectedItem.Value);
sda.SelectCommand.Parameters.AddWithValue("@user_name", User.Identity.Name);
DataTable dt = new DataTable();
dt.Clear();
sda.Fill(dt);
PagedDataSource pds = new PagedDataSource();
pds.DataSource = dt.DefaultView;
pds.AllowPaging = true;
pds.PageSize = 2;
pds.CurrentPageIndex = PageNumber;
int countp = pds.PageCount;
if (pds.PageCount > 0)
{
LinkButton1.Visible = true;
LinkButton5.Visible = true;
LinkButton6.Visible = true;
LinkButton7.Visible = true;
Label3.Visible = true;
Label3.Text = "صفحه :" + Convert.ToString(PageNumber + 1) + " از :" + Convert.ToString(pds.PageCount);
}
else
{
LinkButton1.Visible = false;
LinkButton5.Visible = false;
LinkButton6.Visible = false;
LinkButton7.Visible = false;
Label3.Visible = false;
}
LinkButton1.Enabled = !pds.IsFirstPage;
LinkButton5.Enabled = !pds.IsLastPage;
LinkButton6.Enabled = !pds.IsFirstPage;
LinkButton7.Enabled = !pds.IsLastPage;
Repeater1.DataSource = pds;
Repeater1.DataBind();
return countp;
}
public int PageNumber
{
get
{
if (ViewState["PageNumber"] != null)
return Convert.ToInt32(ViewState["PageNumber"]);
else
return 0;
}
set
{
ViewState["PageNumber"] = value;
}
}
و اینم کد واکشی اطلاعات از جدول:
ALTER PROCEDURE Select_Soal
(
@k_dars int = 5,
@user_name nvarchar(15)
)
AS
Begin
select t_q.k_dars, t_q.id_q, t_q.Q, t_a.id_a, t_a.a1, t_a.a2, t_a.a3, t_a.a4 from t_q inner join t_a on t_q.id_q=t_a.id_q where (t_q.k_dars =@k_dars) and (t_q.id_q NOT IN (select id_q from t_p where user_name=@user_name and a_true_k <> '0')) ORDER BY NEWID()
End
RETURN
ریپرتر رو با استفاده از کد زیر صفحه بندی میکنم
توی صفحه بندی مشکلی ندارم ولی موقع نمایش اطلاعات تصادفی به مشکل بر می خورم و احتمال اینکه توی صفحه بعدی هم مطالب تکراری ظاهر بشه خیلی زیاد
خواهشن کمک کنید باید چه کار کنم من
کد صفحه بندی :
private int LoadData()
{
//نمایش سوالات
SqlDataAdapter sda = new SqlDataAdapter("Select_Soal", scon);
sda.SelectCommand.CommandType = CommandType.StoredProcedure;
sda.SelectCommand.Parameters.AddWithValue("@k_dars", DropDownList1.SelectedItem.Value);
sda.SelectCommand.Parameters.AddWithValue("@user_name", User.Identity.Name);
DataTable dt = new DataTable();
dt.Clear();
sda.Fill(dt);
PagedDataSource pds = new PagedDataSource();
pds.DataSource = dt.DefaultView;
pds.AllowPaging = true;
pds.PageSize = 2;
pds.CurrentPageIndex = PageNumber;
int countp = pds.PageCount;
if (pds.PageCount > 0)
{
LinkButton1.Visible = true;
LinkButton5.Visible = true;
LinkButton6.Visible = true;
LinkButton7.Visible = true;
Label3.Visible = true;
Label3.Text = "صفحه :" + Convert.ToString(PageNumber + 1) + " از :" + Convert.ToString(pds.PageCount);
}
else
{
LinkButton1.Visible = false;
LinkButton5.Visible = false;
LinkButton6.Visible = false;
LinkButton7.Visible = false;
Label3.Visible = false;
}
LinkButton1.Enabled = !pds.IsFirstPage;
LinkButton5.Enabled = !pds.IsLastPage;
LinkButton6.Enabled = !pds.IsFirstPage;
LinkButton7.Enabled = !pds.IsLastPage;
Repeater1.DataSource = pds;
Repeater1.DataBind();
return countp;
}
public int PageNumber
{
get
{
if (ViewState["PageNumber"] != null)
return Convert.ToInt32(ViewState["PageNumber"]);
else
return 0;
}
set
{
ViewState["PageNumber"] = value;
}
}
و اینم کد واکشی اطلاعات از جدول:
ALTER PROCEDURE Select_Soal
(
@k_dars int = 5,
@user_name nvarchar(15)
)
AS
Begin
select t_q.k_dars, t_q.id_q, t_q.Q, t_a.id_a, t_a.a1, t_a.a2, t_a.a3, t_a.a4 from t_q inner join t_a on t_q.id_q=t_a.id_q where (t_q.k_dars =@k_dars) and (t_q.id_q NOT IN (select id_q from t_p where user_name=@user_name and a_true_k <> '0')) ORDER BY NEWID()
End
RETURN