PDA

View Full Version : سوال: چگونگی پاک شدن ستونهای دیتاگرید ویو



پروگرامنویس
سه شنبه 03 آبان 1390, 15:32 عصر
من یه دیتاگریدویو رو فرمم دارم و دو دکمه لیست کالاها و لیست فاکتوها،میخوام وقتی روی دکمه اول کلیک کنم اطلاعات کالا توی دیتاگرید نمایش بده و با دکمه فاکتور فاکتورها البته برای این کار مشکل ندارم ،مشکلم سر اینه که توی جدول فاکتورها 6تا ستون و توی جدول کلا 4ستون دارم،من وقتی روی یکی از دکمه ها مثلا فاکتور کلیک ونتیجه رو میبینم(بدرستی)بعد روی دکمه کالا کلیک میکنم ستونهای هر دو جدول باهم قاطی میشه لطفا یه دستور بدید تا وقتی روی دکمه ای کلیک میکنم ستونها و اطلاعاتی که قبلا در دیتاگرید بوده پاک شه و دوباره ستونهای مربوط به دکمه جاری اضافه شه.لطفا کمک کنید خیلی گیرم

sobaisobai
سه شنبه 03 آبان 1390, 15:36 عصر
سلام دوست عزیز
dataGridView1.Rows.Clear();

پروگرامنویس
سه شنبه 03 آبان 1390, 16:37 عصر
سلام من هم از این دستور استفاده کردم و هم از دستور DataGritView1.columns.clear() ولی نتیجه نمیده یعنی اسم ستونهای قبلی می مونه و ستونهای جدید به اسم همون جدولهای دیتابیس ظاهر میشن

Mahmoud Zaad
سه شنبه 03 آبان 1390, 17:03 عصر
سلام
ستون ها رو به صورت دستی ساختی؟

پروگرامنویس
سه شنبه 03 آبان 1390, 17:23 عصر
سلام
بله دستی ساختم

wolf_majid
سه شنبه 03 آبان 1390, 18:03 عصر
dataGridView1.Columns.Clear();

من تست کردم اسم ستون ها هم حذف می شه ( البته باید هم همینطور باشه )

پروگرامنویس
سه شنبه 03 آبان 1390, 23:31 عصر
من هم مثل شما همین کدها رو نوشتم اما وقتی رو دکمه دوم کلیک میکنم با این شکل مواجه میشم:
http://www.upsara.com/images/bat4jah4s0oj6wwb46c3.png

اصلا کدهای دو تا دکمه رو میزارم لطف بگید چه مشکلی داره.

دکمه فاکتور:

private void btnFac_Click(object sender, EventArgs e)
{
dgv.Columns.Clear();
dgv.Rows.Clear();
f.date = maskDate.Text;
DataTable dt = new DataTable();
dt.Clear();
dt= f.GozareshFactor();
dgv.DataSource = dt;
int c = dt.Rows.Count;
int m = 0;
for (int i = 0; i < c; i++)
m += Int32.Parse(dt.Rows[i]["mablagh"].ToString());
dgv.Columns[0].HeaderText = "شماره فاکتور";
dgv.Columns[1].HeaderText = "شماره میز";
dgv.Columns[2].HeaderText = "شماره اشتراک";
dgv.Columns[3].HeaderText = "مبلغ فاکتور";
dgv.Columns[4].HeaderText = "نوع فاکتور";
dgv.Columns[5].HeaderText = "تاریخ ثبت فاکتور";
dgv.Columns[6].HeaderText = "زمان ثبت فاکتور";
dgv.Columns[6].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
lblpool.Text = m.ToString();

ch = 2;
}
دکمه کالا

dgv.Columns.Clear();
dgv.Rows.Clear();
f.date = maskDate.Text;
DataTable dt = new DataTable();
dt.Clear();
dt= f.GozareshKala();
dgv.DataSource = dt;
int c = dt.Rows.Count;
int m=0;
for (int i = 0; i < c; i++)
{
m += Int32.Parse(dt.Rows[i]["jameghymat"].ToString());
}
dgv.Columns[0].HeaderText = "نام غذا";
dgv.Columns[1].HeaderText = "تعداد";
dgv.Columns[2].HeaderText = "قیمت";
dgv.Columns[3].HeaderText = "جمع قیمت";
dgv.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
lblpool.Text = m.ToString();

ch = 1;
ببخشید ولی یه سوال دیگه هم داشتم من میخوام برای گزارش گیری اطلاعات دیتا گرید رو توی دیتا تیبل بریزم ولی نحوه این کار رو بلد نیستم ممکنه این سوال رو هم جواب بدید.

sobaisobai
سه شنبه 03 آبان 1390, 23:38 عصر
سلام مجدد
با کد زیر میتونی بریزی تو دیتا تیبل
DataTable DtReport = new DataTable();
DtReport.Columns.Add("نام غذا", typeof(string));
DtReport.Columns.Add("تعداد", typeof(string));
DtReport.Columns.Add("قیمت", typeof(string));
DtReport.Columns.Add("جمع کل", typeof(string));
for (int i = 0; i < dgv.Rows.Count; i++)
{
string[] DGridReport = new string[] {
dgv.Rows[i].Cells[0].Value.ToString()
,dgv.Rows[i].Cells[1].Value.ToString()
,dgv.Rows[i].Cells[2].Value.ToString()
};
DtReport.Rows.Add(DGridReport);
}

پروگرامنویس
چهارشنبه 04 آبان 1390, 00:11 صبح
ممنون ولی خطا گرفت ،راستش این دیتاتیبلی که میگم رو من توی یه دیتاست از قبل واسه همین گزارش گیری ساختم نمیدونم ولی اینی که شما گفتید هم کار نکرد

sobaisobai
چهارشنبه 04 آبان 1390, 01:05 صبح
خطاش چی بود؟

پروگرامنویس
چهارشنبه 04 آبان 1390, 13:11 عصر
روی این دستور خطا میگیره یعنی پارامتر ورودی "آرایه" رو نامعتبر می دونه

DtReport.Rows.Add(DGridReport);

پروگرامنویس
چهارشنبه 04 آبان 1390, 13:20 عصر
از دستور زیر خطا میگیره ،یعنی پاامتر ورودی "آرایه" رو معتبر نمی دونه.

ds.گزارش_کالا.Addگزارش_کالاRow(s tr);

sobaisobai
چهارشنبه 04 آبان 1390, 13:47 عصر
ds چیه؟
اگه دیتاست هست دیگه نیازی به دیتاست نداری
کد زیر رو دوباره تست کن
DataTable DtReport = new DataTable();
DtReport.Columns.Add("تعداد", typeof(string));
DtReport.Columns.Add("قیمت", typeof(string));
DtReport.Columns.Add("جمع کل", typeof(string));
for (int i = 0; i < dgv.Rows.Count; i++)
{
string[] DGridReport = new string[] {
dgv.Rows[i].Cells[0].Value.ToString()
,dgv.Rows[i].Cells[1].Value.ToString()
,dgv.Rows[i].Cells[2].Value.ToString()
};
DtReport.Rows.Add(DGridReport);
}

پروگرامنویس
چهارشنبه 04 آبان 1390, 13:53 عصر
آخه اون دیتاتیبلی"گزارش کالا" که به کریستال ریپورت مربوط میشه رو توی دیتاست"ds" ساختم.منظورتون از نیازی به دیتاست نداری چیه ؟چون دیتاتیبل من توی تیتا ست هستش

sobaisobai
چهارشنبه 04 آبان 1390, 13:55 عصر
اگه برنامتو بذاری بهتر میتونم راهنمایی کنم

پروگرامنویس
چهارشنبه 04 آبان 1390, 14:19 عصر
کل برنامم حدود 35 مگ سنگینه نمیشه آپلود کرد ولی ببین این دیتاتیبلی که میخوام اطلاعات دیتاگرید رو توش بریزم وصل به دیتاست ،یعنی من از قبل برای اطلاعات دیتاگرید یه دیتاتیبل، با همون تعداد ستونهای دیتاگرید ساختم. حالا میخوام اطلاعات دیتاگرید رو بریزم توی دیتاتیبل مربوطه، نمیدونم تونستم منظورم رو منتقل کنم یا نه؟ ولی اگه بتونی مشکل رو حل کنی خیلی ممنون میشم.

sobaisobai
چهارشنبه 04 آبان 1390, 14:32 عصر
خب دوست عزیز با همون کدی که من گذاشتم اطلاعات دیتاگرید رو میریزه تویه دیتاتیبل دیگه
من خودم تست کردم مشکلی نداره حالا نمیدونم مشکلت کجاست

پروگرامنویس
پنج شنبه 05 آبان 1390, 15:29 عصر
مشکل حل نشد:افسرده: ولی در هر حال ممنون