lord_helgard
سه شنبه 07 بهمن 1393, 14:15 عصر
با سلام
دوستان من میخواهم دو دکمه در فرم قرار بدم که بعد از بازیابی اطلاعات از دیتابیس مقدار فیلد آی دی که اولین فیلد از دیتاریدر هست رو در آرایه برزیم و بع همین ترتیب بعد از قراردهی مقدار داده های بدست آمده با استفاده از 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 قرار میگرفت و با انتخاب هر آیتم عکس مربوط به آن نمایش داده میشد، اما حال میخواهم از این دکمه ها استفاده کنم !!
127954
دوستان من میخواهم دو دکمه در فرم قرار بدم که بعد از بازیابی اطلاعات از دیتابیس مقدار فیلد آی دی که اولین فیلد از دیتاریدر هست رو در آرایه برزیم و بع همین ترتیب بعد از قراردهی مقدار داده های بدست آمده با استفاده از 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 قرار میگرفت و با انتخاب هر آیتم عکس مربوط به آن نمایش داده میشد، اما حال میخواهم از این دکمه ها استفاده کنم !!
127954