PDA

View Full Version : نمایش تصادفی اطلاعات در repeater



mjt10063
دوشنبه 30 اردیبهشت 1392, 23:21 عصر
سلام دوستان
من با کد زیر سطر اول و تعداد سطر ها رو در میارم

// گرفتن سطر اول درس
SqlCommand scmf_r = new SqlCommand("Select_f_r",scon);
scmf_r.CommandType = CommandType.StoredProcedure;
scmf_r.Parameters.AddWithValue("@k_dars",DropDownList1.SelectedItem.Value);
f_r = Int32.Parse(scmf_r.ExecuteScalar().ToString());

//گرفتن تعداد سطر های درس انتخاب شده از جدول
SqlCommand scmount = new SqlCommand("Select_Count_T_q", scon);
scmount.CommandType = CommandType.StoredProcedure;
scmount.Parameters.AddWithValue("@k_dars", DropDownList1.SelectedValue);
count = Int32.Parse(scmount.ExecuteScalar().ToString());
count--;


و بااین کد هم عدد تصادفی تولید میکنم


IEnumerable<int> UniqueRandom(int minInclusive, int maxInclusive)
{
List<int> candidates = new List<int>();
for (int i = minInclusive; i <= maxInclusive; i++)
{
candidates.Add(i);
}
Random rnd = new Random();
while (candidates.Count > 1)
{
int index = rnd.Next(candidates.Count);
yield return candidates[index];
candidates.RemoveAt(index);
}
}


حالا نمیدنم چطور توی ریپرتر به صورت تصادفی نمایش بدم خودم این کارو کردم
ولی اصلا جواب نداد


foreach (int i in UniqueRandom(f_r, count))
{
//نمایش سوالات
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);
sda.SelectCommand.Parameters.AddWithValue("@id_n", i);
DataTable dt = new DataTable();
dt.Clear();
sda.Fill(dt);
Repeater1.DataSource = dt;
Repeater1.DataBind();
}


با تشکر

mjt10063
سه شنبه 31 اردیبهشت 1392, 07:48 صبح
کسی نیست بتونه کمک کنه
خیلی ممنون میشم

mjt10063
یک شنبه 05 خرداد 1392, 23:27 عصر
یعنی واقعا کسی بلد نیست اطلاعات رو توی ریپرتر به صورت تصادفی نمایش بده

ایمان مدائنی
یک شنبه 05 خرداد 1392, 23:36 عصر
دوست عزیز خود sql تابع random داره
از همون استفاده کن
لینک زیر رو ببین

لینک (http://www.petefreitag.com/item/466.cfm)

mjt10063
یک شنبه 05 خرداد 1392, 23:56 عصر
دوست عزیز دوتا سوال برام پیش اومده
1- الان این تابع راندوم اس کیو ال دیگه تکراری نمایش نمیده

2- من باید از کدوم کد استفاده کنم الان با vs 2010 کار میکنم و فکر کنم اس کیوال من 2008

zerocool151
یک شنبه 05 خرداد 1392, 23:56 عصر
بهتره بجای اینکه کل اطلاعات و استخراج کنی توسط همون SelectCommand دوتا یا هر چند تا سطر رو که میخوای بصورت رندوم فراخونی کنی

select * from tblName orderby newid()

mjt10063
دوشنبه 06 خرداد 1392, 00:04 صبح
زیاد اس کیو ال بلد نیستم
ولی این کد واکشی سوالات از بانک که میخوام به صورت تصادفی نمایش بدم
الان چطوری باید بنویسمش
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'))

zerocool151
دوشنبه 06 خرداد 1392, 00:26 صبح
آخر آخرش اینو بنویس
orderby newid()

mjt10063
دوشنبه 06 خرداد 1392, 09:45 صبح
داشی انجام شد
حالا میشه بگی این newid()
چه عملیاتی رو انجام میده میخوام یاد بگیریم
شاید بعد ها به دردم بخوره