PDA

View Full Version : سوال: انتقال کامل اطلاعات datagridview



sinashahab
دوشنبه 04 مرداد 1389, 16:57 عصر
سلام

من در یه فرمم یه دیتاگریدویو دارم و داخلشو پر می کنم و می خواهم اطلاعات این دیتاگریدویو فرم 1 به دیتاگریدویو فرم دوم ارسال بشه و اطلاعاتشون یکی بشود .

ممنون:تشویق::تشویق::تشویق:

اگه بد توضیح دادم بگید دوباره یگم .

میلاد قاضی پور
دوشنبه 04 مرداد 1389, 22:56 عصر
خب این فور رو بنویسید:





Form2 f2=new Form2();
for(i=0; i<datagridview1.columns.count; i++)
{
f2.datagridview.columns[i]=datagridview1.columns[i];
}

foreach(datagridviewrow row in datagridview1.rows)
{
f2.datagridview.rows.add(row);
for(j=0;j<datagridview1.columns.count;j++)
{
f2.datagridview.rows[(int)f2.datagridview.rows.count-1].cells[j].value=row.cells[j].value;
}
}

f2.show();

nazaaniiiiiiin
پنج شنبه 13 شهریور 1393, 12:30 عصر
سلام
من کدهایی که گفتید رو نوشتم ولی وقتی f2. رو می زنم به جای datagridview ، عبارت databinding رو می یاره :عصبانی++:
می شه یکم راهنمایی کنید :لبخند:

aminmousavi
پنج شنبه 13 شهریور 1393, 12:57 عصر
سلام دوست عزیز . میتونین نمونش رو از لینک زیر دانلود کنید :

http://greendeveloper.ir/files/GD_Gridview.zip

nazaaniiiiiiin
پنج شنبه 13 شهریور 1393, 20:31 عصر
مرسی :لبخند: من نمی خوام تمام ستونهای datagrid فرم 1 رو به datagrid فرم2 ارسال کنم ؟
باید چیکار کنم ؟ :عصبانی++::عصبانی++:

یونس ابراهیمی
پنج شنبه 13 شهریور 1393, 21:10 عصر
دوست عزیز موهای خودتو نکن!!!! کامل توضیح بده چی میخوای؟

aminmousavi
پنج شنبه 13 شهریور 1393, 21:34 عصر
کد زیر رو جایگزین کد درون اونت کلیک Button1 بکن :


private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
DataTable dt = ((DataTable)dataGridView1.DataSource).Copy();
dt.Columns.RemoveAt(1);
frm.dt = dt;
frm.Show();
}


برای هر ستونی که نمیخوای وجود داشته باشه از

dt.Columns.RemoveAt(n);

استفاده کن ، برای اینکه منطقش برات سخت نشه از آخر Remove کن ، فرض بخوای ستون 0،4،7 رو پاک کنی اینجوری بنوس :

dt.Columns.RemoveAt(7);
dt.Columns.RemoveAt(4);
dt.Columns.RemoveAt(0);

nazaaniiiiiiin
پنج شنبه 13 شهریور 1393, 22:36 عصر
میشه بگید این Error که برای خط * داده برای چیه ؟
form2 f2 = new form2();
for( int i =0;i<DGV1.columns.count;i++);
*f2.DGV.columns[i] = DGV1.columns[i];
ERROR :
property or indexer 'System.Windows.Forms.DataGridViewColumnCollection .this[int]'cannot be assigned to --it is read only

aminmousavi
پنج شنبه 13 شهریور 1393, 23:07 عصر
نمیتونین به این شکل دو تا ستون رو به هم انتساب بدی ! همانطور که توی error آماده ستون ها Readonly هستن ، نمیتونین به هم انتساب بدین ، باید مشخصاتی که میخوای رو خودت ست کنی . مثل : columns[i].Caption="test"

nazaaniiiiiiin
پنج شنبه 13 شهریور 1393, 23:22 عصر
مرسی از راهنماییتون :لبخند:

nazaaniiiiiiin
پنج شنبه 13 شهریور 1393, 23:37 عصر
میشه حالت ستونها از readonly تغییر بدم ؟:متفکر:

aminmousavi
پنج شنبه 13 شهریور 1393, 23:40 عصر
نه ، شما نمیتونین با این روش به هیچ وجه انتساب انجام بدین !
کاری که میخواید بکنید رو دقیق توضیح بدید ، تا بتونم راهنماییتون کنم .

nazaaniiiiiiin
جمعه 14 شهریور 1393, 00:50 صبح
برنامه ام در رابطه با یک رستوران ، من می خوام گارسون اطلاعات سفارش مشتری رو که تو Gridview هست و با زدن check box مشخص می شه رو بگیره بعد اون رو بفرسته به فرم صندوق تا اونجا با استفاده از اطلاعات صندوق و یکسری اطلاعات که از جدول می گیره فاکتور را صادر کنه البته چون نمی دونستم اطلاعات فاکتور را چه جوری به شکل جدول روی فرم نایش بدم می خواستم از grid استفاده کنم بعد با زدن button چاپ مثل فیشهای رستوران برام چاپ کنه
این یک بخشی از پروژه پایان نامه ام هستش:گریه:

aminmousavi
جمعه 14 شهریور 1393, 01:12 صبح
دوست عزیز یعنی شما برای گرفتن سفارش و بعدش رفتن اطلاعات سفارش مشتری به صندوق ، میخوای 2 تا فرم بزاری ، بعد تو یکی اطلاعات رو پر کنی بعد دکمه صندوق رو زدی اطلاعات از این فرم به فرم صندوق بره !؟!
اگر الگوریتم تون اینی باشه که بنده متوجه شدم زیاد جالب نیست ، اگر قرار است سفارش سرپایی صورت بگیره و همون موقغ پرداخت شه (مثل بشتر فست فود ها) اصلا 2 تا فرم نیاز ندارین ، تو همین فرم سفارش رو میگیرین و فاکتور رو صادر میکنین دیگه .
اما اگر قراره سفارش گرفته بشه و بعدا مشتری به صندوق مراجعه کنه ، اصلا روش شما جواب نمیده . حتما باید سفارش توی دیتابیس ذخیره بشه

nazaaniiiiiiin
جمعه 14 شهریور 1393, 01:24 صبح
کد زیر رو جایگزین کد درون اونت کلیک Button1 بکن :


private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
DataTable dt = ((DataTable)dataGridView1.DataSource).Copy();
dt.Columns.RemoveAt(1);
frm.dt = dt;
frm.Show();
}


برای هر ستونی که نمیخوای وجود داشته باشه از

dt.Columns.RemoveAt(n);

استفاده کن ، برای اینکه منطقش برات سخت نشه از آخر Remove کن ، فرض بخوای ستون 0،4،7 رو پاک کنی اینجوری بنوس :

dt.Columns.RemoveAt(7);
dt.Columns.RemoveAt(4);
dt.Columns.RemoveAt(0);

من این کدی که گفتید رو وارد کردم ولی به خط چهارم که میرسه این پیغام رو می ده :ناراحت:
Object reference not Set to an instance of an Object :گریه:

nazaaniiiiiiin
جمعه 14 شهریور 1393, 01:26 صبح
قراره بعد از سرو غذا به صندوق مراجعه کنند :ناراحت: پس باید چیکار کنم ؟

aminmousavi
جمعه 14 شهریور 1393, 01:36 صبح
در خصوص ارور ، کد رو تست کردم براتون گذاشتم . تا بقیه کدتون رو ندید که چجوری Datasource رو وارد میکنید نمیتوتن راهنمایتون بکنم .
اصولش اینکه یک جدول به نام سفارش بسازید و موقع تسویه اطلاعات رو از جدول فراخوانی کنید نه از دیتاگرید صفحه قبل ! چون ممکنه مثلا من بیام غذا سفارش بدم ، تا وقتی که من نیام صندوق شما نمیتونید فرم سفارش من رو بندید چون اطلاعات سفارش من پاک میشه ! به همین دلیل رستوران سفارش نمیتونه از کس دیگه ای بگیره چون من غذام تمام نشده :دی

nazaaniiiiiiin
جمعه 14 شهریور 1393, 15:21 عصر
مرسی ، میشه یک راهنمایی کنید که چطوری اطلاعات یک grid که چند تا ستون داره رو بریزم تو datatable برای سطرهاش می دونم حلقه for باید بزارم ولی برای ستونها نمی دونم باید چیکار کنم :ناراحت:

aminmousavi
جمعه 14 شهریور 1393, 16:10 عصر
DataTable dtable = new DataTable();
foreach(DataGridViewColumn dc in dataGridView1.Columns)
{
dtable.Columns.Add(dc.HeaderText);
}