PDA

View Full Version : رنگی کردن Cell ها DataGrid



MShirzadi
شنبه 14 بهمن 1385, 20:18 عصر
با سالم خدمت دوستان

ما توی VB.NET 2003 میتونستیم یک DataGrid رو طوری طراحی کنیم که موقع نمایش Row ها رو یک در میان رنگی میکرد حالا این کار رو ما توی VB.NET 2005 چطوری میشه انجام داد

در این مورد هم یه توضیحی بدید که چطوری میشه وقتی یه روی یک Cell کلیک میکنیم تمام Row انتخاب بشه این کار یادم میاد که توی VB6 میشد انجام داد

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

rezaei manesh
شنبه 14 بهمن 1385, 20:26 عصر
1.


Dim rownum, cellnum, i, j As Integer
rownum = Grid1.Rows.Count
For i = 0 To rownum - 1
If i Mod 2 = 0 Then
cellnum = Grid1.Rows.Item(i).Cells.Count
For j = 0 To cellnum - 1
Grid1.Rows.Item(i).Cells.Item(j).Style.BackColor = Color.Linen
Grid1.Rows.Item(i).Cells.Item(j).Style.ForeColor = Color.MidnightBlue
Next
End If
Next

2.
selectionmod=FullRowSelect

MShirzadi
یک شنبه 15 بهمن 1385, 12:17 عصر
من این کد رو تست نکردم اما
اقا دستت درد نکه

vahidiran
یک شنبه 15 بهمن 1385, 12:52 عصر
دوست عزیز اگه از Vb.net 2005 استفاده می کنی پسشنهاد من اینه که از کنترل DataGridView بجای DataGrid استفاده کنی وقتی استفاده کنی می بینی که چه لذتی داره

برای کار هایی شما برای اینکه یک درمیان تغییرات داشته باشی در ردیف ها خاصیت
AlternatingRowsDefaultCellStyle
این رو تنظیم می کنی که علاوه بر تغییرات رنگ می تونی font و یا align و یا هر چی که فکر کنی تغییر بدی بدون نوشته یک خط کد

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

DataGridView1.SelectionMode=DataGridViewSelectionM ode.FullRowSelect

rezaei manesh
یک شنبه 15 بهمن 1385, 13:39 عصر
اینو هستم AlternatingRowsDefaultCellStyle
اون یکی رو هم که من گفتم
حق با دوستمون هست من هم گرایدویو رو پیشنهاد می کنم کد های من هم برای گراید ویو هست
اما خود گراید هم همین خاصیت رو داره

vahidiran
یک شنبه 15 بهمن 1385, 20:45 عصر
اینو هستم AlternatingRowsDefaultCellStyle
اون یکی رو هم که من گفتم
حق با دوستمون هست من هم گرایدویو رو پیشنهاد می کنم کد های من هم برای گراید ویو هست
اما خود گراید هم همین خاصیت رو داره

منظور از اینو هستم چیه
باور کن که من ندیم جواب سوال دوم رو داده بودی

MShirzadi
دوشنبه 16 بهمن 1385, 02:11 صبح
باتشکر از همه شما دوستان
امیدوارم موفق باشید

rezaei manesh
دوشنبه 16 بهمن 1385, 09:29 صبح
اینو هستم منظورم این بود که روش شما بهتر بود من دنبال این متد می گشتم اما پیداش نکرده بودم
در مورد سوال دوم هم بی خیال مهم اینه که دوستمون به هدفشون برسند که ظاهرا رسیدند

negar_programmer
دوشنبه 16 بهمن 1385, 10:45 صبح
این یه کد خوب برای تغییر ظاهر

DataGrid1.BackgroundColor = System.Drawing.Color.MediumSlateBlue
DataGrid1.TableStyles.Clear()
Dim tblCrrncMngr As CurrencyManager = CType(BindingContext(DataSet2.Tables.Item("نام جدول")), CurrencyManager)
Dim TblStyle AsNew DataGridTableStyle
With TblStyle
.PreferredRowHeight = 35
.MappingName = "نام جدول"
.BackColor = System.Drawing.Color.White
.ForeColor = System.Drawing.Color.DarkSlateBlue
.GridLineColor = System.Drawing.Color.MediumSlateBlue
.HeaderBackColor = System.Drawing.Color.Lavender
.HeaderForeColor = System.Drawing.Color.MediumSlateBlue
.AlternatingBackColor = Color.LightGray
.RowHeaderWidth = 10
EndWith
اولین فیلد
TblStyle.GridColumnStyles.Add(New DataGridTextBoxColumn(tblCrrncMngr.GetItemProperti es.Item("نام اولین فیلد")))
TblStyle.GridColumnStyles.Item(0).Width = 80
TblStyle.GridColumnStyles.Item(0).MappingName = "نام اولین فیلد"
TblStyle.GridColumnStyles.Item(0).HeaderText = "عنوان اولین فیلد"
TblStyle.GridColumnStyles.Item(0).NullText = String.Empty
.
.
.
DataGrid1.TableStyles.Add(TblStyle)

vahidiran
دوشنبه 16 بهمن 1385, 10:55 صبح
یه توضیح هم بدهید که چکار می کنه
در ضمن کدتونو توی تگcode قرار دهید که بتونیم به راحتی کپی کنیم

negar_programmer
سه شنبه 17 بهمن 1385, 08:44 صبح
این کد می یاد و کلا style های یک datagrid معمولی را پاک می کنه - بعد یه CurrencyManager برای bind کردن dataset تعریف می کنه و در خط بعدی یه style جدید به کل جدول می ده و در ادامش برای هر فیلد dataset هم یک طول سایز و عنوان درست می کنه این برای وقتی هست که عناوین dataset از database خونده شده و english هستن این کار برای هر فیلد تکرار می شه و در آخر style جدید جایstyle همون datagrid را می گیره

sohrab o
جمعه 20 بهمن 1385, 20:18 عصر
اینایی که گذاشتید واسه .Net 2003 اما تو 2005 جواب نمی ده