PDA

View Full Version : مشکل با DataGridView و انتخاب ردیف با چک باکس



sadeghpa80
سه شنبه 28 مهر 1394, 15:51 عصر
سلام
من توی پروژه ام یه گرید دارم که از دیتابیس پر میشه و لیست حساب های پرداخت نشده رو نشون میده

حالا می خوام کاربر از توی این گرید چند تا ردیف رو تیک بزنه و با فشردن یه دکمه ردیف های انتخاب شده به یه صفحه دیگه بره

من این کار رو تقریبا انجام دادم و الان با انتخاب ریف ها این ردیف ها توی یه لیست ذخیره میشه و این لیست هم توی صفحه بعدی دارم . اما مشکل من اینه که نمی دونم چجوری توی صفحه جدید این لیست رو بخونم!!!
یعنی می خوام با یه For یا یدونه حلقه به ازای هر ردیفی که توی لیستم هست یه تکست باکس تولید بشه و مقدارش اون تو بخوره

امیدوارم منظورم رو درست متوجه شده باشید .
مرسی از همه

am_al_59
سه شنبه 28 مهر 1394, 15:58 عصر
لیست شما چی هست اگر لیستی از رشته ها باشه و گرید شما هم یک ستون داشته باشه اینطوری میشه

foreach (var item in listString)
dataGridView1.Rows.Add(item);

sadeghpa80
سه شنبه 28 مهر 1394, 16:05 عصر
لیست شما چی هست اگر لیستی از رشته ها باشه و گرید شما هم یک ستون داشته باشه اینطوری میشه

foreach (var item in listString)
dataGridView1.Rows.Add(item);




ممنون اما یا من منظورم رو بد رسوندم یا شما منظورم رو بد متوجه شدید
من الان توی صفحه اول که گرید دارم ID ردیف های انتخاب شده رو میتونم توی لیست بریزم و ریخته میشه و به صفحه جدید پاس میده
اما نمی دونم توی صفحه جدید که این لیست رو میگیرم چجوری بخونمش و بریزمش توی تکست باکس
ممنون

am_al_59
سه شنبه 28 مهر 1394, 16:12 عصر
یعنی شما لیستی از آی دی در صفحه جدید داری یعنی لیست شما یا int هست یا string
حالا شما میخوای همین ای دی هارو توی گرید جدید قرار بدی یا از روی این آی دی ها سایر اطلاعات رو بدست بیاری و بریزی تو گرید؟
برای حالت اول که دستورش همونه
برای حالت دوم هم شما دو تا راه داری
یکی اینکه بجای قرار دادن هر آی دی در لیست توی صفحه اول خاصیت DataBoundItem هر خط رو بزاری توی لیست و پاس بدی به صفحه دوم
راه دوم هم اینه که دوباره کوئری بگیری از دیتابیست و اونو با لیستی از آی دی هایی که داری فیلتر کنی
راه اول راحت تر و سریع تره
اما اگر راه دوم رو میری بگو چطوری اطلاعات رو از دیتابیس میگیری یا کوئری چیه و آیا از Linq استفاده میکنی یا نه؟

sadeghpa80
سه شنبه 28 مهر 1394, 16:25 عصر
یعنی شما لیستی از آی دی در صفحه جدید داری یعنی لیست شما یا int هست یا string
حالا شما میخوای همین ای دی هارو توی گرید جدید قرار بدی یا از روی این آی دی ها سایر اطلاعات رو بدست بیاری و بریزی تو گرید؟
برای حالت اول که دستورش همونه
برای حالت دوم هم شما دو تا راه داری
یکی اینکه بجای قرار دادن هر آی دی در لیست توی صفحه اول خاصیت DataBoundItem هر خط رو بزاری توی لیست و پاس بدی به صفحه دوم
راه دوم هم اینه که دوباره کوئری بگیری از دیتابیست و اونو با لیستی از آی دی هایی که داری فیلتر کنی
راه اول راحت تر و سریع تره
اما اگر راه دوم رو میری بگو چطوری اطلاعات رو از دیتابیس میگیری یا کوئری چیه و آیا از Linq استفاده میکنی یا نه؟

بله من در صفحه جدید یه لیست دارم که توش int پر شده ( تعداد اون به نسبت انتخاب کاربر متفاوته )

در صفحه جدید هم قصد ندارم گرید داشته باشم فقط میخوام هر کدام از این از Int ها رو بخونم و توی یه تکست باکس بریزم

ممنون

am_al_59
سه شنبه 28 مهر 1394, 16:33 عصر
foreach (var item in listInt)
Controls.Add(new TextBox() { Text = item.ToString() });




کد بالا به تعداد آی دی ها TextBox درست میکنه و هر آی دی رو در یکی قرار میده
TextBox ها در فرم درست میشن شما میتونی در Container که داری add کنی

sadeghpa80
سه شنبه 28 مهر 1394, 16:50 عصر
foreach (var item in listInt)
Controls.Add(new TextBox() { Text = item.ToString() });


کد بالا به تعداد آی دی ها TextBox درست میکنه و هر آی دی رو در یکی قرار میده
TextBox ها در فرم درست میشن شما میتونی در Container که داری add کنی

ممنون کاری که می خواستم کنم رو انجام میده
اما یه سوالی دارم
این کاری که می خوام کنم عقلانیه ؟

من می خوام توی گرید کاربر مثلا سه تا ردیف رو انتخاب کنه و با زدن یه دکمه انتقال پیدا کنه به صفحه جدید
اونجا بیاد بهش بگه شما سه تا فاکتور رو انتخاب کردی که مبلغ این سه تا فاکتور X تومن میشه . آیا از پرداخت مطمئن هستید ؟ بعد از زدن بله این سه تا ردیف انتخاب شده توی دیتابیس تیک پرداخت بخوره

نظرت چیه از این راهی که دارم میرم خوبه

am_al_59
سه شنبه 28 مهر 1394, 17:05 عصر
راستش چی بگم، همیشه قواعد رو برنامه نویس تعیین میکنه کاربر هم باید رعایت کنه
فکر میکنم شما کد اون سه تا فاکتور رو میبری تو صفحه جدید حالا یا امکان تغییر به کاربر می دی یا نمیدی
در هرصورت توی همون صفحه جدید با یک سری امکانات دیگه مثل نمایش حاصل جمع فاکتورها منتظر تأیید یا انصراف کاربر میمونی درسته؟
خوبه مشکلی نیست
من خودم چون کار نرم افزار مالی زیاد میکنم معمولاً اگر فقط بخوام حمع فاکتور رو نشون بدم و کابر بخواد فقط تأیید کنه حالا برای انجام هر کاری همون پایین فرمم یک statusBar درست میکنم و کارهارو همونجا انجام میدم خوبیش اینه که غیر از کد سایر اطلاعات فاکتور که در گرید هست جلوی چشم کاربره و بصورت همچین بگی نگی زنده تز با تغییر انتخاب ها مبلغ تغییر میکنه
جسارتاً فقط نظرمو گفتم قطعاً شما که برنامه رو مینویسی انتخاب های بهتری میکنی :لبخندساده:

alireza4474
یک شنبه 03 آبان 1394, 23:03 عصر
حداقل یه عکس بزار ببینیم چی میگی