ورود

View Full Version : آموزش کار با DataGrid



bad_boy_2007
شنبه 13 مرداد 1386, 08:25 صبح
سلام دوستان
همونطور که میدونید DataGrid یک از پیچیده ترین و پرکاربرد ترین ابزارهایی است که به درد هر برنامه نویسی میخوره و خود من هم سوالات زیادی در ارتباط با نحوه عملکرد این ابزار دارم ، بهمین دلیل این تاپیک رو زدم که دوستانی که تخصصی در این زمینه دارن و احیانا آموزشی در این مورد دارن دذر این تاپیک قرار بدن .

bad_boy_2007
شنبه 13 مرداد 1386, 08:28 صبح
اولین سوال رو هم خودم مطرح میکنم !
ببینیند دوستان با کمک ویژگی CurrentCell میتونیم به سطر و ستونی که انتخاب شده ارجاع پیدا کنیم ، خب اگر بخوام مثل Flex Grid که ویژگی Row و Colmn به ترتیب به سطر و ستون فعلی ارجاع میدادن ، در مورد سطر باید از ویژگی CurrentRow.index استفاده کنیم ولی واسه Colmn چطور ؟

bad_boy_2007
شنبه 13 مرداد 1386, 08:47 صبح
چند تا ویژگی که شاید همه باهاشون آشنایی داشته باشین :
RowCount : تعداد سطرها رو برمیگردونه و امکان تغییر تعداد سطرها رو هم میده
ColmnCount : تعداد ستونها رو برمیگردونه و تنظیم میکنه
SelectAll : انتخاب همه سطرها و ستونها
SelectedRows : آرایه ای از سرهای انتخاب شده رو بر میگردونه
مثال : فرض کنید گریدی دارید که تعدادی سر از اون انتخاب شده و میخواین اولین سطر انتخابی رو از حالت انتخاب خارج کنید :


Dgrid.SelectedRows(0).Selected = False
SelectedColmn هم آرایه ای از ستونهای انتخاب شده بر میگردونه
Select : دقیقا کار Focus رو انجام میده
با استفاده از این کد میتونید تعداد سطهایی که انتخاب شده رو بدست بیارید :


Dgrid.SelectedRows.Count

bad_boy_2007
شنبه 13 مرداد 1386, 09:02 صبح
یک سوال دیگه
ویژگی SelectedRows ، آرایه ای از سرهای انتخاب شده رو برمیگردونه وقتی بیش از 2 سطر انتخاب شده باشه با کد زیر میتونم سطرهای انتخاب شده رو تغییر بدم :



Dgrid.SelectedRows(0).Height = 10


ولی وقتی که فقط یک سطر انتخاب شده برخلاف تصورم که باید یک آرایه فقط با یک عنصر برگردونه (فقط با index برابر 0) اینطور نیست ! یعنی این کد زمانی که فقط یک سطر انتخاب شده کار نمیکنه :


Dgrid.SelectedRows(0).Height = 10


میشه راهنمایی کنید وقتی فقط یک سطر انتخاب شده و میخوام بهش دسترسی پیدا کنم باید چیکار کنم ؟
وقتی با این کد تعداد سطرهای انتخاب شده رو تست کردم وقتی یک سطر انتخاب شده صفر رو برمیگردونه ولی اگه 2 سطر انتخاب بشه ، 2 رو بر میگردونه :


Dgrid.SelectedRows.Count

bad_boy_2007
شنبه 13 مرداد 1386, 19:33 عصر
ببینم بین پهلوونای این فروم کسی نیست بیاد دست ما رو بگیره !!!
شدیدا نیاز دارم که شماره ستون رو بدست بیارم اگه راهنماییم کنین ممنون میشم :لبخند:

asilverisis
یک شنبه 14 مرداد 1386, 00:13 صبح
سلام
ببین این به دردت می خوره؟


Private Sub DataGridView1_RowEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.RowEnter
MsgBox(DataGridView1.Rows(e.RowIndex).Cells(0).Val ue)
End Sub



موفق و موید

PC2st
یک شنبه 14 مرداد 1386, 00:49 صبح
در مورد سطر باید از ویژگی CurrentRow.index استفاده کنیم ولی واسه Colmn چطور ؟
خاصیت CurrentCell.ColumnIndex


میشه راهنمایی کنید وقتی فقط یک سطر انتخاب شده و میخوام بهش دسترسی پیدا کنم باید چیکار کنم ؟
همان روشی که خودتون گفته بودید درسته یا استفاده از CurrentRow که به اون هم اشاره کردید.


وقتی با این کد تعداد سطرهای انتخاب شده رو تست کردم وقتی یک سطر انتخاب شده صفر رو برمیگردونه ولی اگه 2 سطر انتخاب بشه ، 2 رو بر میگردونه
اینگونه نیست، مطمئن هستید که یک سطر رو با کلیک روی Header آن، انتخاب کردید یا اینکه خاصیت SelectionMode روی FullRowSelect انتخاب شده؟

bad_boy_2007
یک شنبه 14 مرداد 1386, 22:30 عصر
خیلی ممنون


نقل قول:
وقتی با این کد تعداد سطرهای انتخاب شده رو تست کردم وقتی یک سطر انتخاب شده صفر رو برمیگردونه ولی اگه 2 سطر انتخاب بشه ، 2 رو بر میگردونه
اینگونه نیست، مطمئن هستید که یک سطر رو با کلیک روی Header آن، انتخاب کردید یا اینکه خاصیت SelectionMode روی FullRowSelect انتخاب شده؟
اوهوم !

یک سوال دیگه هم دارم کمبو باکس ویژگی ای داره فکر کنم Selected index که میتونمی index‌ انتخابی رو بفهمیم یا تغییر بدیم ولی وقتی بجای یک سلول از گرید از کمبو استفاده میکنم این ویژگی وجود نداره ، میشه راهنمایی کنید چطور میتونم به این ویژگی دسترسی پیدا کنم ؟

PC2st
یک شنبه 14 مرداد 1386, 23:07 عصر
متاسفانه خاصیتی که بطور صریح selected index را مشخص کنه، پیدا نکردم ولی به شکل زیر میشه مقدار index انتخاب شده از combo box رو در متغیر selectedIndex قرار داد، با فرض اینکه اولین column از نوع کمبو باکس باشه، برای سطر فعلی خواهیم داشت:


DataGridViewComboBoxCell tmpCell = (DataGridViewComboBoxCell)this.dataGridView1.Curre ntRow.Cells[0];
int selectedIndex = tmpCell.Items.IndexOf(tmpCell.Value);

bad_boy_2007
دوشنبه 15 مرداد 1386, 08:34 صبح
خیلی خیلی ممنونم
من یک جدول داشتم شامل مقادیری که به کاربر نشون میدادم و کد مقداری رو که نشون میدم رو میخواستم با این کد تونستم فیلد ID رو در بیارم و کاربر هم فقط Name رو میبینه .


Dim tempcell As DataGridViewComboBoxCell
tempcell = Dgrid.CurrentRow.Cells(1)
MsgBox(tempcell.Value)

golihaghighi
دوشنبه 15 مرداد 1386, 08:46 صبح
لطفا این بحث رو ادامه بدید چون بدرد خیلیها میخوره- ممنون

bad_boy_2007
دوشنبه 15 مرداد 1386, 08:57 صبح
لطفا این بحث رو ادامه بدید چون بدرد خیلیها میخوره- ممنون
حتما البته با یاری باقی دوستان

تا الان با کمک PC2st.ir عزیز تونستم به ID مربوط به Name انتخاب شده در کمبو دسترسی پیدا کنم ولی نمیتونم وقتی گرید لود میشه یکی رو بصورت پیش فرض تعیین کنم.

یک مشکل دیگه هم دارم ، میخوام کاربر بهیچ وجه نتونه وارد یک ستون از گرید بشه ظاهرا ویژگی مشخصی واسه این کار نداره فقط میتونم کاری بکنم که یک ستون تغییر نکنه .
فکر کنم باید وقتی یک ستون که نمیخوام بره منتقل شد ستون انتخاب شده رو خودم عوض کنم ، دوستان اگه نظر یا پیشنهادی در ین مورد دارن بگن لطفا :لبخندساده:

golihaghighi
دوشنبه 15 مرداد 1386, 09:10 صبح
فکر کنم باید با رخداد OnSelect این کارو انجام بدید. یعنی خودتون با یک شرط Select رو عوض کنید.

PC2st
دوشنبه 15 مرداد 1386, 19:51 عصر
وقتی گرید لود میشه یکی رو بصورت پیش فرض تعیین کنم.
اگر منظورتون این باشه که از طریق کد یکی از item های comboBox رو انتخاب کنید، باید نام item را به خاصیت Value نسبت دهید تا اون item از comboBox انتخاب بشه.
مثلا اگر comboBox ائی که درون DataGridView است دارای دو item به نامهای Hello و Boodbye باشه، کد زیر باعث میشه که Hello بعنوان item انتخاب شده، و در سلول به نمایش در بیاد.


Me.DataGridView1.Rows(0).Cells(0).Value = "Hello"

نمیدونم خوب فهمیدم یا خیر ولی اگر سوال رو اشتباه فهمیده بودم، بهم بگید.

bad_boy_2007
دوشنبه 15 مرداد 1386, 20:59 عصر
فکر کنم باید با رخداد OnSelect این کارو انجام بدید. یعنی خودتون با یک شرط Select رو عوض کنید.

این رخداد وجود نداره یک کد نوشتم ستونی رو که نمیخوام توش بره رو از از حالت انتخاب خارج میکنه ولی ، ستون فعلی همونیه که نمیخوام باشه !

PrivateSub Dgrid_CellEnter(ByVal sender AsObject, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Dgrid.CellEnter
If e.ColumnIndex = 0 Then
Dgrid.Rows(e.RowIndex).Cells(e.ColumnIndex).Select ed = False
EndIf
EndSub

bad_boy_2007
دوشنبه 15 مرداد 1386, 21:13 عصر
اگر منظورتون این باشه که از طریق کد یکی از item های comboBox رو انتخاب کنید، باید نام item را به خاصیت Value نسبت دهید تا اون item از comboBox انتخاب بشه.
مثلا اگر comboBox ائی که درون DataGridView است دارای دو item به نامهای Hello و Boodbye باشه، کد زیر باعث میشه که Hello بعنوان item انتخاب شده، و در سلول به نمایش در بیاد.


Me.DataGridView1.Rows(0).Cells(0).Value = "Hello"

نمیدونم خوب فهمیدم یا خیر ولی اگر سوال رو اشتباه فهمیده بودم، بهم بگید.

ممنون از راهنماییتون تست کردم جالب بود جواب داد ولی روی برنامه اصلیم جواب نداد !
من تو برنامه اصلیم یک کمبو دارم که یک سری مقادیر رو به یوزر نشون میدم و ممکنه مقادیر ختی تکراری هم باشند و تنها راه تشخیص من مقدار Id مربوطه است پس تنظیماتم رو طوری کردم که name رو برای کاربر نشون بده و در هنگام بازیابی ID مربوطه رو برگردونه یه نگاهی به این بندازید :
http://i9.tinypic.com/6437o0x.gif
یک ID معتبر رو دادم ولی خطا داد ، مقدار Name معتبر هم دادم باز هم جواب نداد ! ولی وقتی زدم مقدار بازگشتی Name باشه قشنگ جواب داد ! :عصبانی++: که این هم به درد من نمیخوره !

PC2st
دوشنبه 15 مرداد 1386, 22:55 عصر
یعنی یک جدول بنام DV_Anbar دارید که این جدول حاوی دو فیلد هست: name و id. میخواهید لیستی که به کاربر نمایش داده میشود همان رکوردهای فیلد name باشد، و گزینه ائی که کاربر از کمبوباکس انتخاب کرده، از رکوردهای فیلد id گرفته شود. مقداری که کاربر از کمبوباکس انتخاب کرده مقدار یک رکورد از فیلد id خواهد بود که از طریق خاصیت Value قابل دسترسی است... من کاملا متوجه نشدم.


من تو برنامه اصلیم یک کمبو دارم که یک سری مقادیر رو به یوزر نشون میدم و ممکنه مقادیر ختی تکراری هم باشند
مثلا فرض کنیم که DataGridView1 را به یک DataSet1 متصل کرده اید، در اینصورت مقدارهائی که به کاربر نمایش داده میشود، نباید تکراری باشد. شاید علت بوجود آمدن خطا، همین مقادیر تکراری در فیلد name باشد؟

bad_boy_2007
سه شنبه 16 مرداد 1386, 07:43 صبح
ممنون از راهنماییتون تست میکنم
دقیقا همونطور که شما گفتید یک جدول دارم با دو فیلد (و البته چند تا فیلد جانبی دیگه که اهمیتی نداره) ، این جدول رو با یک View بنام DV_anbar فیلتر کردم و به کاربر نشون میدم ، کاربر باید یک گزینه رو انتخاب کنه و در انتها مقدار ID مربوطه رو من از کمبو دریافت میکنم.
فیلد Name رو هم Unique میکنم نتیجه رو میگم چی شد :لبخندساده:

bad_boy_2007
سه شنبه 16 مرداد 1386, 07:44 صبح
راستی واسه اینکه CurrentCell یا CurrentColmn رو تغییر بدیم کسی راه حلی نداره ؟ :متفکر:

PC2st
سه شنبه 16 مرداد 1386, 15:37 عصر
عذر میخوام توضیح پست قبلم ناقص بود :ناراحت:، چونکه باید میگفتم اگر فیلد Name بصورت Primary Key باشد، نباید تکراری بشه...

برای اینکه CurrentCell رو تغییر بدیم:


Me.DataGridView1.CurrentCell = Me.DataGridView1(columnIndex, rowIndex)

که متاسفانه اگر بخواهیم CurrentCell رو در هنگام رویداد CellEnter عوض کنیم، خطا میده!

PC2st
سه شنبه 16 مرداد 1386, 16:00 عصر
یک ID معتبر رو دادم ولی خطا داد ، مقدار Name معتبر هم دادم باز هم جواب نداد ! ولی وقتی زدم مقدار بازگشتی Name باشه قشنگ جواب داد !
ببخشید این قسمت رو خوب متوجه نشدم... اگر لازم دونستید بیشتر توضیح بدید (ترجیحا با کد).

bad_boy_2007
سه شنبه 16 مرداد 1386, 22:52 عصر
وقتی تنظیماتم رو به این شکل میکنم :
http://i17.tinypic.com/4m9akg0.gif
هیچ مشکلی با این کد ندارم :


Me.Dgrid.CurrentRow.Cells(1).Value = "انبار شماره "


ولی وقتی که تنظیمات رو به این شکل تغییر میدم :
http://i9.tinypic.com/6437o0x.gif

دیگه این کد جواب نمیده :


Me.Dgrid.CurrentRow.Cells(1).Value = 5

یا این یکی :


Me.Dgrid.CurrentRow.Cells(1).Value = "انبار شماره "


http://i12.tinypic.com/61ttg08.gif

و مشکل من هم اینه که فقط به فیلد id به عنوان خروجی نیاز دارم و نه نام ، البته میتونم از روی اسمش id رو هم پیدا کنم (با یکم دردسر !) ولی میخواستم بدونم اگه جایی اشتباه میکنم اشتباهم رو رفع کنم نه اینکه بخاطر یه اشتباه راه دیگه رو انتخاب کنم :لبخند:

bad_boy_2007
سه شنبه 16 مرداد 1386, 22:55 عصر
برای اینکه CurrentCell رو تغییر بدیم:


Me.DataGridView1.CurrentCell = Me.DataGridView1(columnIndex, rowIndex)

که متاسفانه اگر بخواهیم CurrentCell رو در هنگام رویداد CellEnter عوض کنیم، خطا میده!
دستت درد نکنه :لبخندساده: ، تست میکنم نتیجه اش رو میگم :لبخند:

PC2st
سه شنبه 16 مرداد 1386, 23:47 عصر
ممنون، حالا متوجه منظورتون شدم...

دقیقا مطمئن نیستم، اما به احتمال زیاد نوع فیلد id با مقداری که میخواهید درون خاصیت Value بگذارید، همخوانی نداره! میشه بپرسم نوع فیلد id چیه؟

bad_boy_2007
چهارشنبه 17 مرداد 1386, 00:02 صبح
خیلی خیلی ممنون از راهنماییتون ، همونطور که خودتون هم ذکر کردید تو رویداد ورود به یک سلول و یا خروج از سلول و یا تغییر سلول و امثال اینها نمیتونیم CurrentCell رو تنظیم کنیم دلیلش هم اینه که باعث بروز OverFlow Exception میشه ، البته اگه تو شرط تست بشه نباید باعث بروز این خطا بشه ولی ظاهرا عمو بیلی یکمی اینجاشو سخت گرفته !
برای این کار من تو رویداد KeyDown و MouseClick کد زیر رو به صورت تابع نوشتم و مشکلم حل شد.


PrivateSub Dgrid_KeyDown(ByVal sender AsObject, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Dgrid.KeyDown
If Dgrid.CurrentCell.ColumnIndex = 0 Then
Me.Dgrid.CurrentCell = Me.Dgrid(1, Me.Dgrid.CurrentRow.Index)
EndIf
EndSub

bad_boy_2007
چهارشنبه 17 مرداد 1386, 00:03 صبح
ممنون، حالا متوجه منظورتون شدم...

دقیقا مطمئن نیستم، اما به احتمال زیاد نوع فیلد id با مقداری که میخواهید درون خاصیت Value بگذارید، همخوانی نداره! میشه بپرسم نوع فیلد id چیه؟

نوع فیلد Id : SmallInt

bad_boy_2007
چهارشنبه 17 مرداد 1386, 00:08 صبح
دستت درد نکنه باز هم مشکلم حل شد !
باید تبدیل نوع انجام میدادم !

PrivateSub Dgrid_RowEnter(ByVal sender AsObject, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Dgrid.RowEnter
Dgrid.Item("row", Dgrid.RowCount - 1).Value = Dgrid.RowCount
Dgrid.Item(1, e.RowIndex).Value = CType(5, Short)
EndSub

mohsen_123
چهارشنبه 17 مرداد 1386, 00:21 صبح
ببخشید جه جوری میشه رکورد ها رو تک تک بهdatagrid اضافه کرد
مثلاً 10 تا رکورد داریم میخوایم با زدن هر بار دکمه فقط یه رکورد به datagrid اضافه شه
البته تو vb.net2003

mohsen_123
چهارشنبه 17 مرداد 1386, 00:32 صبح
ببخشید من میخوام تو vb.net 2003 رکوردها رو تک تک به datagrid اضافه کنم
مثلاً 10 رکورد دارم میخوام با زدن هر بار یک دکمه فقط یه رکورد به datagrid اضافه شه

bad_boy_2007
چهارشنبه 17 مرداد 1386, 00:42 صبح
Me.Dgrid.Item(0, Me.Dgrid.CurrentRow.Index).Value = "value1"
Me.Dgrid.Item(1, Me.Dgrid.CurrentRow.Index).Value = "value2"

bad_boy_2007
پنج شنبه 18 مرداد 1386, 14:49 عصر
سلام دوستان
من میخوام سطر فعلی رو از دیتاگرید حذف کنم از این دستور استفاده کردم :


dgrid.CurrentRow.Dispose()


ولی این دستور آخرین سطر گرید رو حذف میکنه ، میشه راهنمایی کنید چطور میتونم آخرین سطر گرید رو حذف کنم .
نمیخوام دونه دونه عناصر رو به بالا شیفت بدم (چون ترتیب عناصر تو گرید مهمه و تعدادشون هم زیاده) و یه مورد دیگه هم که بگم بد نیست من با بانک اطلاعاتی کار ندارم ، فقط دارم یک سری اطلاعات رو از کاربر میگیرم (واسه اینکه راهنمایی رو ویو و غیره نکنید :لبخند:)

salimim
سه شنبه 23 مرداد 1386, 07:54 صبح
سلام
من یه data grid دارم که می خوام با انتخاب یک ستون عنوان header اون توی text یه label نوشته بشه. (شماره ستونو نمی خوام فقط عنوانشو)
ممنون می شم اگه راهنمایی کنین

salimim
سه شنبه 23 مرداد 1386, 08:39 صبح
جواب سئوالمو پیدا کردم شاید به درد دوستان بخوره:



Label1.Text = DataGrid.Columns.Item(DataGrid.CurrentCell.ColumnI ndex).HeaderText

bad_boy_2007
سه شنبه 23 مرداد 1386, 19:55 عصر
سلام دوستان
من میخوام سطر فعلی رو از دیتاگرید حذف کنم از این دستور استفاده کردم :


dgrid.CurrentRow.Dispose()


ولی این دستور آخرین سطر گرید رو حذف میکنه ، میشه راهنمایی کنید چطور میتونم آخرین سطر گرید رو حذف کنم .
نمیخوام دونه دونه عناصر رو به بالا شیفت بدم (چون ترتیب عناصر تو گرید مهمه و تعدادشون هم زیاده) و یه مورد دیگه هم که بگم بد نیست من با بانک اطلاعاتی کار ندارم ، فقط دارم یک سری اطلاعات رو از کاربر میگیرم (واسه اینکه راهنمایی رو ویو و غیره نکنید :لبخند:)
کسی نیست منو راهنمایی کنه ؟ :متفکر:

PC2st
سه شنبه 23 مرداد 1386, 20:36 عصر
از کد زیر استفاده کنید:


Me.DataGridView1.Rows.RemoveAt(Me.DataGridView1.Cu rrentRow.Index)

art2000ir
شنبه 31 شهریور 1386, 07:28 صبح
دوتا سوال
1- با جه کدی میشه دیتا گرید را سورت کرد بر اساس کوچک به بزرگ یا بالعکس
2- باچه کدی میشه متن هدر را عوض کرد البته اگه به بانک وصل بشی میشه ادیت کرد اما اگه دیتا ست رو بفرستی نام ستونهای دستا بیس رو نمایش میده میخوام اون هدر رو عوض کنم

PC2st
شنبه 31 شهریور 1386, 12:12 عصر
1. اگر dataGridView1.DataSource = dataTable باشه:


dataGridView1.Sort(dataTable.Columns("column_Name"), ListSortDirection.Ascending)


2.


dataGridView1.Columns("ID").HeaderText = "شناسه"

bad_boy_2007
چهارشنبه 11 مهر 1386, 22:40 عصر
سلام دوستان
ممنون میشم راهنماییم کنید که چطور میتونم رنگ زمینه یک سطر رو تغییر بدم :لبخندساده:

bad_boy_2007
جمعه 13 مهر 1386, 22:47 عصر
هیچ کی نیست ؟:متفکر:

PC2st
شنبه 14 مهر 1386, 21:45 عصر
مثلا برای تغییر رنگ (background) سطر دوم:


dataGridView1.Rows(1).DefaultCellStyle.BackColor = Color.Blue

bad_boy_2007
یک شنبه 15 مهر 1386, 00:04 صبح
ممنون از راهنماییتون
و اما یک سوال دیگه :
راهی هست که بدون کد نویسی تو جدول مشتری ها ، اونایی که حسابشون منفیه با رنگ زمینه قرمز نشون بدم ؟ بدون اینکه کدنویسی کنم ؟
یعنی از طریق تنظیمات گرید

PC2st
یک شنبه 15 مهر 1386, 05:19 صبح
بدون اینکه کدنویسی کنم ؟
یعنی از طریق تنظیمات گرید
تا جایی که میدونم نداره :متفکر:

odiseh
یک شنبه 15 مهر 1386, 08:06 صبح
سلام و تشکر از پسر خوب bad_boy_2007 به خاطر ایجاد این تاپیک خوب و بقیه دوستان بخصوص Pc2st.ir ....

من در مورد نحوه استفاده از DataGridView خیلی تازه کارم و دلم میخواد کار کردن با اونو خوب خوب یاد بگیرم. بنابراین سوالامو مطرح می کنم:
1- اگه یه view داشته باشیم، چطوری DataGridView رو با اطلاعات اون پر کنیم؟ لطفا نگیر که بنویس:

Dgrid.Datasource = ds
چون اینکار مد نظرم نیست......می خوام سر ستونای گرید عنوانای فارسی داشته باشه...
لطفا برام بنویسید که روش قدم به قدم پر کردن این DataGridView چیه؟
2- حالا که این Grid پر شد می خوام اطلاعات اونو بریزم توی یه فایل Excel. یعنی یه فایل excel از طریق برنامه درست کنم و توی یه sheet از اون این اطلاعات گرید رو بریزم.

دوستان خوبم لطفا اگه جواب سوالای منو می دونید بهم کمک کنید چون خیلی خیلی نیاز دارم

با تشکر

ehsan_zanganeh
یک شنبه 15 مهر 1386, 11:44 صبح
با سلام

مقدار دادن به datagrid توسط view با مقدار دادن آن توسط database فرقی نمی کنه. فق کافی در دستور select بجای نام بانک از نام view استفاده کنی.

بعد نتیجه select رو به یک datatable بدی و اون رو به datagrid وصل کنی.

حالا باید یکی یکی header ستونهات رو عوض کنی بصورت :

dataGridView1.Columns("ID").HeaderText = "شناسه"

راجع به خروجی به excel هم چیزی نمی دونم

ehsan_zanganeh
یک شنبه 15 مهر 1386, 13:09 عصر
با سلام

دوستان من فکر می کنم اگر بیایم و تمام متدها و پروپرتی های datagridview و مقادیری که هریک میگیرن رو لیست کنیم ، خیلی از مشکلات حل شه.

مرسی

art2000ir
یک شنبه 15 مهر 1386, 14:37 عصر
چرا شما برای خروچی گرفتن اکسل از کریستال استفاده نمی کنی که خودش چند نوع خروجی در اختیار شما قرار میده ؟؟

bad_boy_2007
یک شنبه 15 مهر 1386, 20:31 عصر
سلام و تشکر از پسر خوب bad_boy_2007 به خاطر ایجاد این تاپیک خوب و بقیه دوستان بخصوص Pc2st.ir ....

من در مورد نحوه استفاده از DataGridView خیلی تازه کارم و دلم میخواد کار کردن با اونو خوب خوب یاد بگیرم. بنابراین سوالامو مطرح می کنم:
1- اگه یه view داشته باشیم، چطوری DataGridView رو با اطلاعات اون پر کنیم؟ لطفا نگیر که بنویس:

Dgrid.Datasource = ds
چون اینکار مد نظرم نیست......می خوام سر ستونای گرید عنوانای فارسی داشته باشه...
لطفا برام بنویسید که روش قدم به قدم پر کردن این DataGridView چیه؟
2- حالا که این Grid پر شد می خوام اطلاعات اونو بریزم توی یه فایل Excel. یعنی یه فایل excel از طریق برنامه درست کنم و توی یه sheet از اون این اطلاعات گرید رو بریزم.

دوستان خوبم لطفا اگه جواب سوالای منو می دونید بهم کمک کنید چون خیلی خیلی نیاز دارم

با تشکر

اول از همه از جناب PC2st.ir تشکر میکنم بابت راهنمایی هایی که کردن .
ادیسه جان یه نگاهی به عکس زیر بنداز واسه مشخص کردن سربرگها کمکت میکنه .
من برای اینکه گرید رو نمایش بدم اول کرید رو پیکر بندی میکنم (زمان طراحی) ، یعنی بخش Chose DataSourse رو کلیک میکنم و سربرگها رو تنظیم میکنم ، بعد از انجام این کار چون اطلاعات من قراره فیلتر شده داخل گرید نمایش داده بشه با استفاده از یک DataView اطلاعات رو فیلتر میکنم
http://i23.tinypic.com/2rqir7d.gif

odiseh
دوشنبه 16 مهر 1386, 08:31 صبح
سلام و ممنون از توجه شما دوستان خوب
بچه ها سوال اول من حل شد: من دونه دونه به گریدم ستون اضافه کردم و بعدش آخر سر datasource اون گرید رو با dt ام پر کردم. هوراااااااااااااااااااااا ااااااااااااااااااااااااا ااااااا

ولی سوال دوم من هنوز مونده : حالا چطوری این گریدو بریزم تو اکسل؟

bad_boy_2007
دوشنبه 16 مهر 1386, 23:18 عصر
سلام و ممنون از توجه شما دوستان خوب
بچه ها سوال اول من حل شد: من دونه دونه به گریدم ستون اضافه کردم و بعدش آخر سر datasource اون گرید رو با dt ام پر کردم. هوراااااااااااااااااااااا ااااااااااااااااااااااااا ااااااا

ولی سوال دوم من هنوز مونده : حالا چطوری این گریدو بریزم تو اکسل؟
میتونی با کریستال ریپورت ازش گزارش تهیه کنی که کار سختی نیست ، بعد میتونی فایل گزارش رو به World و Access , . . . تبدیل کنی یا چاپش کنی

khz-web1
چهارشنبه 12 تیر 1387, 20:04 عصر
دوستان این کد جواب نمیده :گریه:




dataGridView1.Columns("ID").HeaderText = "شناسه"


ارور میده

khz-web1
پنج شنبه 13 تیر 1387, 01:22 صبح
آقا حل شد مشکل من ....
اگه بخوایم یکی در میان رنگ قرمز و آبی باشه ... چی.... میشه 1 راهنمایی کنید

zebra1362
دوشنبه 14 اردیبهشت 1388, 18:30 عصر
می خواستم با انتخاب یک رکورد در datagridview در vb.netجدول دیگری که متصل به این رکورد است را در فرم دیگری نمایش بدهم.
مثلا با انتخاب مشخصات یک نفر نام و نام خانوادگی در datagrid کارکرد حقوق و مزایای مربوط به ماههای آن شخص را که در جدول دیگری است در یک فرم دیگر نمایش دهد. لطفا بگویید چکار کنم.
کد ان را می خواستم و راهنمایی کنید با تشکر.

mmd2009
سه شنبه 17 آذر 1388, 02:51 صبح
بچه ها یکیتون یک اموزش فارسی کار با DataGridView بذاره که همه بتونیم استفاده کنیم اگه میشه به زبان vb باشه

faravani
سه شنبه 17 آذر 1388, 09:33 صبح
سلام
من از ابزارهای DEV EXPRESS استفاده میکنم
Grid در این ابزارها هم راحت هم زیبا هم دارای امکانات زیادیه
بعنوان مثال برای برگرداندن یک سطر از دستور زیر استفاده میشه

msgbox ("Gridcontrol1.focusedvalue.tostring")

rexar2
پنج شنبه 12 خرداد 1390, 18:27 عصر
سلام
من ميخواستم كه ركورد هايي كه مثلا تو ستون name علي هست رو نوش بده چيكار كنم
تو vb با data environment
سريع تر كمك كنيد
ياد داشتم ها خيلي وقته برنامه ننوشتم يادم رفته

roxe77
پنج شنبه 12 خرداد 1390, 19:08 عصر
آقا حل شد مشکل من ....
اگه بخوایم یکی در میان رنگ قرمز و آبی باشه ... چی.... میشه 1 راهنمایی کنید

For i As Integer = 0 To dg1.RowCount - 1
If i Mod 2 = 0 Then
dg1.Rows(i).DefaultCellStyle.BackColor = Color.Red
Else
dg1.Rows(i).DefaultCellStyle.BackColor = Color.Blue
End If
Next

shervinrv
پنج شنبه 12 خرداد 1390, 19:36 عصر
سلام دوستان
من 3 تا کار میخوام با datagridview بکنم
خیلی سرچ کردم اکثر کدهایی که هست واسه c# هستش
و کلا هم یه مقدار پیچیدس

1- میخوام دیتا گرید به صورت اتوماتیک صفحه بندی بشه
ینی تمام اطلاعات لود بشه و خودش صفحه بندیش بکنه چون من برای پر کردن این دیتاگرید تقریبا 1000 خط کد دارم و صفحه بندی کردن به روش دستی واقعا یه کابوسه

2- میخوام از دیتا گرید ویو پرینت بگیرم به طوری که بشه مارجین و portrait و landscape بودن و سایز کاغذ و ... رو تنظیم کرد

3- اگه راهی باشه به صورت ساده بتونم دیتاگرید ویو رو در یه فایل Excel ذخیره کنم خیلی عالی میشه

پیشاپیش ممنون

bhasoft
پنج شنبه 19 خرداد 1390, 12:30 عصر
با سلام خدمت همه دوستان.
راستش يه سوالي داشتم.
من ميخوام وقتي اطلاعاتمو توي ديتا گريد نشون ميدم اولا خودكار سطر اول انتخاب نشه كه اونو دوست خوبمون Roxe177 تو يه تاپيك ديگه جواب دادن.
بعد ميخوام طرف خودش سطر مورد نظر رو انتخاب كنه كه توي اون سطر يه ستون هم دارم به فرض كد پرسنلي.من ميخوام از توي اطلاعات اون سطر كه انتخاب ميشه فقط كد پرسنلي رو بگيرم و توي يك متغيير ذخيره كنم.
ممنون ميشم كسي كمك كنه.
منتظرم.

roxe77
پنج شنبه 19 خرداد 1390, 13:35 عصر
For i As Integer = 0 To Dg1.RowCount - 1
If Dg1.Rows(i).Selected = True Then
Try
moteghair= Dg1.Rows(i).Cells(3).Value
Exit For
Catch ex As Exception

End Try

End If




Next

roxe77
پنج شنبه 19 خرداد 1390, 13:39 عصر
cells(3) .value همون ستونی که کد پرسنلی وجود داره
دقت داشته باش تو گرید ویو اولین ستون صفر دومی یک و...
سطر هم همینطور اولی صفر ، دومی یک ،و...
این کد سطری که انتخاب شده رو که توی ستون چهارمش کد پرسنلی وجود داره رو میریزه تو متغییرت

ساران سافت
دوشنبه 23 خرداد 1390, 17:32 عصر
میشه روش ارسال DataGrid رو به اکسل رو هم بگید با تشکر فراوان

mehdi_9009
دوشنبه 23 خرداد 1390, 22:38 عصر
با سلام
3تا دیتا گرید داریم اولی مربوط بهاطلاعات دوره ها دومی مربوط به اطلاعات پرسنلی می خاهیم از گرید دومی مربوط به اطلاعات پرسنلی به صورت گروهی مثلا کارشناسها رو در ی دوره خاص "به صورت گروهی " ثبت نام کنیم و همه اطلاعات از گرید اول +گرید دوم به صورت گروهی وارد گرید سوم کنیم ممنون می شم اگه به صورت کد منو راهنمایی کنید

minaforotan
جمعه 27 خرداد 1390, 23:40 عصر
کد کالا رو در دیتا گرید از ستون اول انتخاب میکنم و نامش رو در ستون دوم نمایش میده حالا میخوام قیمتشم در ستون سوم نمایش داده بشه و برای این کار اون خط های سبز رنگ رو اضافه کردم اما بازم نام نمایش داده میشه اگه کسی حوصله داره لطفا یه توضیحی بده .ممنون



Dim idkala As Integer = DataGridView1.Item("c_idkala", e.RowIndex).Value
ad.SelectCommand.CommandText = "Select name_kala,gheymat from kala where id_kala='" & idkala & "'"
ad.SelectCommand.Connection.Open()
Dim obj As Object = ad.SelectCommand.ExecuteScalar
DataGridView1.Item("c_namkala", e.RowIndex).Value = CType(obj, String)
'DataGridView1.Item("c_fi", e.RowIndex).Value = CType(obj, String)
ad.SelectCommand.Connection.Close()

sharifat
شنبه 04 تیر 1390, 14:20 عصر
سلام
مي خواستم بپرسم:
اگر بخواهيم يه فيلد از ديتاگريد رو محدود به اين كنيم كه فقط عدد بگيره بايد چكار كرد؟؟؟

من خيلي گذشتم هيچ تاپيك مرتبطي نديدم. اگر جايي در اين مورد بحث شده خواهشا آدرس اون رو واسم بذاريد
ممنون