با سلام
دوستان من میخواهم دو دکمه در فرم قرار بدم که بعد از بازیابی اطلاعات از دیتابیس مقدار فیلد آی دی که اولین فیلد از دیتاریدر هست رو در آرایه برزیم و بع همین ترتیب بعد از قراردهی مقدار داده های بدست آمده با استفاده از select عکس موجود دردایرکتوری که آدرس آن در دیتابیس ذخیره شده نمایش بده، وقتی روی دکمه next کلیک کنم عکس بعدی و وقتی روی Preview کلیک کنم قبلی نمایش داده بشه
آرایه رو به صورت زیر تعریف کردم:
List<string> myArr = new List<string>();
int a,i;
دستور جستجواولیه بر اساس کمبوباکس به صورت زیر که فیلد آی دی رو در آرایه قرار میده:
SqlCommand cmd = new SqlCommand("select img_id,exdate,ostad from img_table where dars=N'" + comboBox1.SelectedItem + "'", conn);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)// اگر ستونی جهت خواندن وجود داره
{
while (dr.Read()) // تا رمانی که میتواند بخواند
{
a = myArr.Count;
myArr.Add(dr[0].ToString());
if (myArr.Count > 1)
{
btnnext.Visible = true;
btnpreiw.Visible = true;
}
....
حالا در دکمه next این کُد ، اما هنگام اجرا فقط آخرین خونه از آرایه رو در متغیر imgid و دستور select قرار مید، لطفاً راهنایی کنید که چه طور میتونم خونه های آرایه رو با فشردن هر بار دکمه next یا بر عکس در دستور select قرار بدم تا هر بار عکس مربوط به آن آی دی قرار گرفته در آرایه نمایش داده بشه.
for (i=0; i < a; i++)
{
string imgid = null;
imgid = myArr[i].ToString();
SqlCommand cmd1 = new SqlCommand("select img_id,img_data,exdate,ostad,uniname from img_table where img_id=N'" + imgid + "'", conn);
conn.Open();
SqlDataReader dr1 = cmd1.ExecuteReader();
if (dr1.HasRows)
{
while (dr1.Read())
{
path = dr1[1].ToString();
pictureBox1.Load(path);
lbltitle.Visible = true;
label1.Visible = true;
string lbl;
lbl = comboBox1.SelectedItem.ToString();
label1.Text = lbl;
label2.Text = dr1[2].ToString();
label3.Text = dr1[3].ToString();
label7.Text = dr1[4].ToString();
}
}
فرم بنده مانند زیر است ، در قبل مقادیر در comboBox قرار میگرفت و با انتخاب هر آیتم عکس مربوط به آن نمایش داده میشد، اما حال میخواهم از این دکمه ها استفاده کنم !!
2015-01-27_14-31-21.jpg