# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > VB.NET > گفتگو: روش کار با دیتا گرید DataGride

## pourang_us

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

باز هم از همه دوستان عزیز سپاس گذارم

----------


## sh2007

من هم از تمامي دوستاني كه بصورت حرفه اي با ديتاگريد كار مي كنن خواهش مي كنم تجربيات خوشون رو توي همين تايپك كه دوست عزيرمان گذاشتن بذارن تا بتونيم يه تايپيك كامل و جامع درباره ديتاگريد داشته باشيم 
ممنون

----------


## DoDoklak

برای حرفه ای شدن باید مطالعه کرد

کتاب زیر تمامی اصول کار با data Grid View رو توضیح داده اگه بخونیش دیگه آخر برنامه نویسی با این ابزار میشی

آموزش جامع کار با Data Grid View
http://www.divshare.com/download/9369755-584

----------


## pourang_us

به  نظر من که بسیار فایل جالبی بود
اما کدها به زبان C هستند. البته تبدیل کردن اونها با استفاده از ساتهای مبدل کار ساده ای هست و یا حد اقل درک کامل کد. اما از دوستان کسی مایل هست که این رو به فارسی ترجمه کنه با توجه به اینکه  69 صفحه هم هست؟
در صورت تمایل یا در دسترس بودن منابع فارسی اونها رو هم قرار بدهید 

متشکرم

----------


## pourang_us

درود 

سوال در خصوص ثبت تغییرات در دیتا گرید

http://www.barnamenevis.org/sh...d.php?t=191735

----------


## pourang_us

*انتخاب چند سطر از یک datagridview* 

https://barnamenevis.org/showthread.php?t=192531

----------


## pourang_us

*کار با دیتاتیبل و نشون ندادن بعضی از ستوناش تو دیتا گرید ویو* 

https://barnamenevis.org/showthread.php?p=551511

----------


## pourang_us

*ذخیره ، ویرایش و حذف اطلاعات در datagridview* 

https://barnamenevis.org/showthread.php?t=74531

----------


## pourang_us

*پرش به آخرین رکورد وارد شده در دیتا گرید ویو* 

http://www.barnamenevis.org/sh...d.php?t=148515

----------


## sh2007

دوستان روش كار با خطا و پروايدر و و يا اررو هندلينگ در مورد ديتاگريد نيز مطلبي دارن ؟
ممنون

----------


## mmd2009

دوستان یه اموزش بگید که چطور میشه اولا یک گریگ ویو رو درست کرد بر اساس اطلاعات بانک اکسس و چطور میشه که بعد از تغییرات در خود بانک اکسس به طور هم زمان در گرید ویو هم تغییر کنه مثلا من تونستم کاری کنم اطلاعات درون بانک اکسس رو نمایش بدم ولی متاسفانه هر کاری میکنم که اطلاعات بعد از ویرایش در بانک اکسس دوباره در گریگ ویو نمایش داده شوند امکان پذیر نبود و فقط اطلاعاتی که با اول نمایش داده رو همیشه نشون میده

مرسی اگر کمک کنید

----------


## mgh64120

دوست عزيز شما بايد بعد از اعمال تغييرات در اطلاعات دوباره اطلاعات رو از بانك اكسس فراخواني كني.
بگو اطلاعات رو چطوري از طريق برنامه تغيير ميدي؟ از طريق خوده ديتاگريده يا با كنترل هاي ديگه مثل TextBox ؟

----------


## armin8651

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

 
 Private Sub DG_backcolor()
        Dim i As Integer
        For i = 1 To (DataGrideView1.Rows.Count - 1) Step 2
            DataGrideView1.Rows(i).DefaultCellStyle.BackColor = Color.Lavender
        Next
    End Sub

----------


## sari-1369

برای اینکه سطر های DGV یکی در میون با هم تفاوت داشته باشن فقط کافیه پروپرتی AlternatingRowsDefaultCellStyle رو مقدار دهی کنی .

----------


## viper2009

سلام دوستان 

چطور اطلاعات یک دیتا گرید ویو رو در دیتا گرید ویو دیگری بدون ذخیره در دیتا بیس انتقال بدم؟

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

----------


## Mani_rf

> اینم تابعی برای اینکه سطرهای DataGrideView رو با دو رنگ مختلف به صورت یکی در میون ببینید تا خوندنش راحتتر باشه.
> 
>  
>  Private Sub DG_backcolor()
>         Dim i As Integer
>         For i = 1 To (DataGrideView1.Rows.Count - 1) Step 2
>             DataGrideView1.Rows(i).DefaultCellStyle.BackColor = Color.Lavender
>         Next
>     End Sub


دوست عزیز روش بهتر از آنچه شما فرمودید استفاده از Propery خود DataGrid است . 
برای انجام این کار می توان از خاصیت 
AlternatingRowsDefaultCellStyle 
 است.
نگاهی به این خاصیت در قسمت Properties مربوط به DataGridView بی اندازید.

----------


## armin8651

ممنون، این خاصیت AlternatingRowsDefaultCellStyle هم خیلی خوبه.

----------


## sari-1369

> سلام دوستان 
> 
> چطور اطلاعات یک دیتا گرید ویو رو در دیتا گرید ویو دیگری بدون ذخیره در دیتا بیس انتقال بدم؟
> 
> و چطور با انتخاب هر سطری از دیتا گرید اول تمام اطلاعات یک سطر در دومین دیتا گرید اضافه بشه؟ و بدون پاک شدن سطر اولی با انتخاب سطرهای دلخواه به سطرهای بعدی دیتا گرید دومی اضافه شود؟


ببین این کارتو راه میندازه .

----------


## mmd2009

> دوست عزيز شما بايد بعد از اعمال تغييرات در اطلاعات دوباره اطلاعات رو از بانك اكسس فراخواني كني.
> بگو اطلاعات رو چطوري از طريق برنامه تغيير ميدي؟ از طريق خوده ديتاگريده يا با كنترل هاي ديگه مثل TextBox ؟


مرسی از اینکه دارید کمکم میکنید  :قلب: 

ببین دوست عزیز من مشکلم همین فراخوانی دوباره بانک هستش من اطلاعات رو اری کردم که کاربر از textbox وارد کنه و میخوام بعد از اینکه مثلا دکمه نمایش کل کاربران رو زد بتونه تمامی کاربران رو ببینه و بعد از اینکه 1 ساعت دیگه خواست دوباره برنامه رو ببینه و مثلا 10 نفر دیگه ثبت نام کردن دوباره بتونه علاوه بر اون کاربران این 10 نفر رو هم بتونه ببینه

----------


## pourang_us

چطور می تونم از رویداد DataGridVeiwCheckBoxColumn در مواقع انتخاب False و True بودن CheckBox استفاده کنم؟


https://barnamenevis.org/showthread.php?t=193595

----------


## pourang_us

*AutoNumber برای دیتاگرید* 


https://barnamenevis.org/showthread.php?t=193108

----------


## pourang_us

*رویداد RowAdded کنترل DataGridView* 

https://barnamenevis.org/showthread.php?t=193077

----------


## sepide1

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

----------


## pourang_us

*توليد خطا در هنگام ورود داده نامعتبر در DataGridView1* 

https://barnamenevis.org/showthread.php?t=190368

----------


## sari-1369

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


فکر کنم این نمونه کمکت کنه .

----------


## mgh64120

> من تونستم کاری کنم اطلاعات درون بانک اکسس رو نمایش بدم ولی متاسفانه هر کاری میکنم که اطلاعات بعد از ویرایش در بانک اکسس دوباره در گریگ ویو نمایش داده شوند امکان پذیر نبود و فقط اطلاعاتی که با اول نمایش داده رو همیشه نشون میده


دوست عزيز شما در بالا گفتيد كه تونستيد اطلاعاتتون رو درون ديتاگريد نمايش بديد.
خوب شما بايد كدي رو كه براي اين كار نوشتيد رو در موقع ويرايش فراخواني كنيد.
مثلاً اگر در رويداد Form_Load فرم قرار داره :

‍Call Form1_Load(Nothing,Nothing)
اگه باز هم مشكلي بود برام كدهاي مربوط به نمايش ديتاگريدت رو كه نوشتي بزار تا بتونم بهتر راهنمايت كنم. :چشمک:

----------


## mmd2009

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

اصلا این گرید ویو رو من متوجه نمیشم

اگه میشه فقط یک اموزش نمایش اطلاعات اکسس با vb.net بذارید تا متوجه بشم

چون فقط اینطوری متوجه میشم

یه ادم با معرفت بیاد یک برنامه درست بکنه که اطلاعات بانک اکسس رو نمایش بده درون گرید ویو با برنامه mvs 2005 و زیان vb.net بعد بذاره اینجا تا منم یاد بگیرم باور کنید اونایی که بلدن کار 1 دقیقه اشون هم نیست که این برنامه رو  درست بکنن

خواهشا یکی این کارو بکنه

----------


## viper2009

سلام دوست عزیز

چون VB من 2008 هست می ترسم نتونی Add کنی به پروژه خودت پس کتبی می نویسم انجام بده
یک پروژه ایجاد کن یک بانک Access با نام DB  یک تیبل هم بساز داری سه فیلد ID,Name,Last به فرمت 2003 هم ذخیره کن در فولدر Debug پروژه ات کنار فایل اجرایی برنامه ات

بر روی فرم یک دیتا گرید قرار بده با نام DGV و سه تا فیلد اضافه کن با همان نامهای فیلد های جدولت و در قسمت خصوصیات هر یک از فیلد ها قسمت مربوط به DataProperty نامهای هر فیلد را مانند نامشان کپی یا بنویس مثلاً نام فیلد ID است DataProperty مساوی ID قرار بده و OK کن

 می تونی یک Navigator هم اضافه کنی با نام BN 

حالا کد نویسی:
1- استفاده از موتوری برای ایجاد اتصال به بانک مورد نظر :
که برای Access از Oledb استفاده می شه 
در بالای کلاس می نویسی Import System.Data.Oledeb

2- ساخت کانکشن : زیر کلاس و یا محل معرفی متغیر Global می نویسی 
Dim StrCon As String ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source = DB.mdb"
مراحل بعد ایجاد متغیر ها
Dim Con As New OledbConnection(StrCon)
Dim Da As OledbAdapter
Dim Ds As New DataSet
Dim Bs As New BindingSource

3- در قسمت فرم لود می نویسی
Da = New OledbAdapter("Select * From Table1",Con)
Da.Fill(Ds,"Table1")

Bs.DataSource = Ds
Bs.DataMember = "Table1"

BN.BindingSource = Bs
DGV.DataSource = Bs

اگر از Navigator استفاده نمی کنی 
فقط DGV.DataSource = Ds.Tabl1(0) کافی است

موفق باشی

----------


## pourang_us

برگرفته از MSDN__________________________________________________  _____________________
DataGridView Classاز این کلاس برای نمایش اطلاعات به صورت سلولی با قابلیت تنظیم توسط کاربر استفاده میگردد.
این کلاس در NameSpace زیر قرار دارد.System.Windows.Forms 
نحوه کار:
معرفی کلاس:<ComVisibleAttribute(True)> _
<ClassInterfaceAttribute(ClassInterfaceType.AutoDi  spatch)> _
Public Class DataGridView
Inherits Control
Implements ISupportInitialize 
استفاده :Dim instance As DataGridView 
نکته:
این کنترل برای شما نحوه نمایش اختصاصی از اطلاعات یک جدول را فراهم میکند.
DataGridView به شما اجازه میدهد تا سلول ها و سطر و ستون و حاشیه ها را از طریق خواصی مانند:DefaultCellStyle
CellBorderStyle
GridColor
ColumnHeadersDefaultCellStyleبنا به دلخواه خود تنظیم نمایید.
یک دیتا گرید میتواند برای نمایش داده ها با یا بدون منبع داده DataSource مورد استفاده قرار گیرد. 
شما میتوانید بدون مشخص کردن منبع داده ستونها و ردیفها که شامل اطلاعات باشند را ایجاد نمایید.
شما میتوانید خواص DataMember و DataSource یک دیتا گرید رابه یک منبع داده مقید کنید و از اطلاعات آن منبع داده در دیتا گرید استفاده نمایید.
هنگامی که شما به حجم بالای داده رو به رو هستید قابلیت VirtualMode به شما کمک میکند از حافظه نهان Cache برای نمایش یک زیر مجموعه استفاده نمایید. 
با وجود اینکه کنترل DataGrideView جایگزین کنترل DataGrid شده است اما قابلیتها و امکانات کنترل قبلی را همچنان حفظ نموده است. 
کد زیر یک نمونه از دیتا گرید ویو بدون منبع UnBound را به شما نشان می دهد
برای اجرا کد زیر را در یک فرم که حاوی یک دیتا گرید ویو به نام dataGridView1 است و سه دکمه Button به نامهای:deleteRowButton
ledgerStyleButton
addNewRowButton 
قرار دهید. و خط به خط کد را بررسی نمایید . عملکرد و تنظیمات اولیه را مشاهد کنید. 

___________________________
Private Sub ledgerStyleButton_Click(ByVal sender As Object, _
   ByVal e As System.EventArgs) Handles ledgerStyleButton.Click 
   ' ساخت یک Stylle جدید برای سلول.
   Dim style As New DataGridViewCellStyle
   With style
       .BackColor = Color.Beige
       .ForeColor = Color.Brown
       .Font = New Font("Verdana", 8)
   End With 
   ' اعمال سبک فرمت به عنوان پیش فرض سلول.
   dataGridView1.AlternatingRowsDefaultCellStyle = style
   ledgerStyleButton.Enabled = False
End Sub 
Private Sub SetUpDataGridView() 
   Me.Controls.Add(dataGridView1)
   dataGridView1.ColumnCount = 5 
   With dataGridView1.ColumnHeadersDefaultCellStyle
       .BackColor = Color.Navy
       .ForeColor = Color.White
       .Font = New Font(dataGridView1.Font, FontStyle.Bold)
   End With 
   With dataGridView1
       .EditMode = DataGridViewEditMode.EditOnEnter
       .Name = "dataGridView1"
       .Location = New Point(8, 8)
       .Size = New Size(500, 300)
       .AutoSizeRowsMode = _
           DataGridViewAutoSizeRowsMode.DisplayedCellsExceptH  eaders
       .ColumnHeadersBorderStyle = _
           DataGridViewHeaderBorderStyle.Raised
       .CellBorderStyle = _
           DataGridViewCellBorderStyle.Single
       .GridColor = SystemColors.ActiveBorder
       .RowHeadersVisible = False 
       .Columns(0).Name = "Release Date"
       .Columns(1).Name = "Track"
       .Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
       .Columns(2).Name = "Title"
       .Columns(3).Name = "Artist"
       .Columns(4).Name = "Album" 
       ' ایتالیک کردن سطر چهارم دیتاگرید.
       .Columns(4).DefaultCellStyle.Font = _
           New Font(Control.DefaultFont, _
               FontStyle.Italic) 
       .SelectionMode = _
           DataGridViewSelectionMode.FullRowSelect
       .MultiSelect = False 
       .BackgroundColor = Color.Honeydew 
       .Dock = DockStyle.Fill
   End With 
End Sub 
Private Sub PopulateDataGridView() 
   ' ساخت آرایه برای هر ردیف اطلاعات.
   Dim row0 As String() = {"11/22/1968", "29", "Revolution 9", "Beatles", "The Beatles [White Album]"}
   Dim row1 As String() = {"4/4/1960", "6", "Fools Rush In", _
       "Frank Sinatra", "Nice 'N' Easy"}
   Dim row2 As String() = {"11/11/1971", "1", _
       "One of These Days", "Pink Floyd", "Meddle"}
   Dim row3 As String() = {"4/4/1988", "7", "Where Is My Mind?", _
       "Pixies", "Surfer Rosa"}
   Dim row4 As String() = {"5/1981", "9", "Can't Find My Mind", _
       "Cramps", "Psychedelic Jungle"}
   Dim row5 As String() = {"6/10/2003", "13", _
       "Scatterbrain. (As Dead As Leaves.)", "Radiohead", _
       "Hail to the Thief"}
   Dim row6 As String() = {"6/30/1992", "3", "Dress", _
       "P J Harvey", "Dry"} 
   ' اضافه کردن ردیف برای هر آرایه.
   With Me.dataGridView1.Rows
       .Add(row0)
       .Add(row1)
       .Add(row2)
       .Add(row3)
       .Add(row4)
       .Add(row5)
       .Add(row6)
   End With 
   ' تغییر ترتیب ستونها برای نمایش.
   With Me.dataGridView1
       .Columns(0).DisplayIndex = 3
       .Columns(1).DisplayIndex = 4
       .Columns(2).DisplayIndex = 0
       .Columns(3).DisplayIndex = 1
       .Columns(4).DisplayIndex = 2
   End With 
End Sub 



درنهایت سعی میکنم به همین روش ادامه بدهم دوستان و بزرگواران نیز اگر ایرادی در مطالب ارایه شده مشاهده کردند و یا پیشنهادی داشتند من استقبال میکنم


موفق باشد

----------


## pourang_us

*وارد کردن داده در DataGrigView بصورت مستقیم .* 
https://barnamenevis.org/showthread.php?t=194057

----------


## barat121

از تمام دوستانی که خالصانه اطلاعات خود را در اختیار علاقمندان قرار می دن صمیمانه تشکر میکنم .

----------


## mgh64120

دوست عزيز mmd2009
با عرض پوزش چند روز كامپيوترم مشكل داشت.
اينم يه پروژه اماده همراه با نمونه چاپي كه توسط دوست عزيزمون Ali Manam تهيه شده.
ادرسش تو سايت هست ولي پيداش نكردم. ولي اون رو در فايل ضميمه برات ميزارم.
موفق باشي!

----------


## pourang_us

*خاصيت اتوكمپلت در ديتاگريد* Auto complete

https://barnamenevis.org/showthread.php?t=194233

----------


## pourang_us

*دیتا گرید سفارشی* 
https://barnamenevis.org/showthread.php?t=195196

----------


## pourang_us

*چطور میشود که اطلاعات درون یک گرید ویو رو پاک کرد* 

https://barnamenevis.org/showthread.php?t=195260

----------


## pourang_us

*بدست آوردن تعداد سطرها در DataGrid* 

https://barnamenevis.org/showthread.php?t=195271

----------


## pourang_us

*در مورد کنترل DataGrid*
*رنگی کردن سطر ها* 

http://www.barnamenevis.org/sh...ad.php?t=35958

----------


## pourang_us

در vs.net 2005 برای رفتن به یک سطر در دیتا گرید چه کدی را باید زد ؟ 

 
http://www.barnamenevis.org/sh...ad.php?t=35265

----------


## pourang_us

*جستجو کردن در جدول و نمایش در گرید* 


http://www.barnamenevis.org/sh...ad.php?t=35197

----------


## pourang_us

*کنترل تغییرات در دیتاگرید* 

http://www.barnamenevis.org/sh...ad.php?t=34833

----------


## farrokhi

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

----------


## saadi2

> چطور کاری کنم وقتی فرم باز میشه از دیتاگرید هیچ سطری(همیشه سطر اول در حالت انتخاب است) انتخاب نشده باشه


 

DataGridView1.ClearSelection()

----------


## karim orooji

با سلام به دوستان 
دوستان به كمكتون نياز فوري دام 
من يك گريد دارم كه حدود  200تا اسم داره كه از بانك ميخونه . توي گريد ميريزه ميخوام از اون اسم ها برام حدود 25 نفر انتخاب كنه و توي listbox و يا توي  textbox و يا label جداگانه برام بريزه :گیج:  :گیج:  :گیج: 
نكته : اين اسامي كه انتخاب ميشند بار دوم كه  نفرات ديگه انتخاب ميشند نبايد تكراري نباشند

زماني كه رو يكي از سطرهاي گريد كليد كنم بياد محتواي برام توي كادر نشون بده
مثل نام و نام خانوادگي و....

----------


## pourang_us

*ویرایش ی datagrid و ذخیره ی آن در database* 

https://barnamenevis.org/showth...124#post645124

----------


## pourang_us

*انتخاب از grid به صورت random* 

http://www.barnamenevis.org/sh...d.php?t=195943

----------


## pourang_us

*رنگي كردن يك كلر يا فونت ديتاگريد در شرايط خاص* 

تعویض رنگ پس زمینه ستونهایی با اطلاعات خاص

http://www.barnamenevis.org/sh...d.php?t=195806

----------


## sh2007

رنگي كردن رديفهاي ديتاگريد يعني يكي در ميان  AlternatingRows

https://barnamenevis.org/showthread.php?t=195769

----------


## pourang_us

*دسترسی به مقدار ID در گرید ویو ؟* 

https://barnamenevis.org/showthread.php?t=196807

----------


## pourang_us

*ذخیره کردن اطلاعات دیتاگرید در بانک* 

https://barnamenevis.org/showth...d=1#post876477

----------


## pourang_us

*ديتا گريد ويو و مقدار عددي*
https://barnamenevis.org/showthread.php?t=196960

----------


## sh2007

تاريخ و ديتاگريد
https://barnamenevis.org/showthread.php?t=197425
https://barnamenevis.org/showthread.php?t=162369

----------


## pourang_us

*ردیف در دیتا گرید*


https://barnamenevis.org/showthread.php?t=197560

----------


## masoud_zarifi

سلام خدمت دوستان عزیز
من می خوام اطلاعات یک سطر از یک datagride رو بردارم یعنی به میخوام آخرین مقدار کلید اصلی رو بریزم توی یک lable.text البته (توی C#‎)
با تشکر

----------


## masoud_zarifi

سوال دیگه ای هم داشتم اونم اینه که توی یک فرم از دو تا datagrideview استفاده کردم و اسماشم متفاوت انتخاب کردم ولی اطلاعات اولی رو توی دومی میاره (نه به طور کامل) مثلا وقتی توی دومی select می کنم که دو تا از ستونها نمایش داده شود بازم همه ستونا نمایش داده میشوند.

----------


## pourang_us

*فرمت یکی از ستونها در DataGridView* 


https://barnamenevis.org/showthread.php?t=202232

----------


## Hossis

ممکنه يک DGV رو طوري از بانک مقدار دهي کنيم که فقط برخي از فيلدها رو بگيره و بقيه رو کاري نداشته باشه
اين رو مي دونم که مي شه اول همه رو بارگذاري کرده و بعد ستونهاي دلخواه رو حذف کنيم ولي چون يک فيلد از من ، حجمش خيلي زياده، بايد کاري کنم که از همون اول بارگزاري نشه و گرنه برنامه هنگ مي کنه ،‌ بنابراين در حين بارگزاري بايد برخي فيلدها استثنا بشن؟

----------


## Shahram_Shobeiri

آقا ما یه کلاس از تو codeproject پیدا کردیم واسه پرینت گرفتن از دیتا گرید. البته واسه پرینت گرفتن از داده های لاتین طراحی شده بود. من یه چیزایی به اون اضافه کردم به شرح زیر :
- راست به چپش کردم
- امکان پرینت گرفتن landscape رو بهش اضافه کردم
- امکان رنگی کردن یکی در میون ردیف ها رو براش ایجاد کردم
- ...
خلاصه یه ابزار گزارش گیری ساده است. امیدوارم دوستان کامل ترش کنند و واسه استفاده بقیه بگذارند.

----------


## iman_me

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

----------


## pourang_us

*دسترسي به يك ركورد از DataGridView*


https://barnamenevis.org/showthread.php?t=212605

----------


## pourang_us

*ترتیب حروف الفبا در گرید ویو*


https://barnamenevis.org/showthread.php?t=211899

----------


## armin8651

> آقا ما یه کلاس از تو codeproject پیدا کردیم واسه پرینت گرفتن از دیتا گرید. البته واسه پرینت گرفتن از داده های لاتین طراحی شده بود. من یه چیزایی به اون اضافه کردم به شرح زیر :
> - راست به چپش کردم
> - امکان پرینت گرفتن landscape رو بهش اضافه کردم
> - امکان رنگی کردن یکی در میون ردیف ها رو براش ایجاد کردم
> - ...
> خلاصه یه ابزار گزارش گیری ساده است. امیدوارم دوستان کامل ترش کنند و واسه استفاده بقیه بگذارند.


یه برنامه کوچیک از نحوه استفادش بذاری خیلی خوب میشه ، ممنون

----------


## Shahram_Shobeiri

Dim Columns_List As New List(Of String)
        Columns_List.Add("نام عملیات")
        Columns_List.Add("درصد از کل")
        Columns_List.Add("هزینه")
        Columns_List.Add("درصد پیشرفت")
        Columns_List.Add("هزینه شده")
        PrintDGV.Print_DataGridView(DataGridView_form_bazd  id, TextBox_title.Text, True, True, Columns_List, CheckBox_landscape.Checked)

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

----------


## msadgd

سلام به دوستان
من یه دیتاگرید دارم که ستون اولش رو ازنوع DataGridViewButtonColumn قرار دادم. توی تنظیمات خود ستون هم مقدار text اون رو برابر با "انتخاب" قرار دادم. قصدم اینه که اول هر سطری یک دکمه انتخاب باشه که کاربر با زدن اون دکمه ..... کدانتخاب متن رو نوشتم و کار می کنه. مشکل من اینه که روی دکمه های اول سطرها هیچی نمی نویسه در صورتی که باید روی اونها متن "انتخاب" نوشنه بشه. 
ممنون بابت راهنماییتون.

----------


## Hell Lord

سلام.
چند ساعت هست که دارم دنبال این میگردم که دیتا گرید (dataGridView) را چطور رفرش کنم. اما هر جور که جستجو و امتحان کردم نتیجه ی درستی نداد ؛خیلی از کد ها را نیز امتحان کردم!
خواهش میکنم کمک کنید.
بنده یک دیتا گرید دارم که به یک دیتا ست متصل است و پس از تغییرات میخواهم رفرش شود! 

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

----------


## ostovarit

> سلام.
> چند ساعت هست که دارم دنبال این میگردم که دیتا گرید (dataGridView) را چطور رفرش کنم. اما هر جور که جستجو و امتحان کردم نتیجه ی درستی نداد ؛خیلی از کد ها را نیز امتحان کردم!
> خواهش میکنم کمک کنید.
> بنده یک دیتا گرید دارم که به یک دیتا ست متصل است و پس از تغییرات میخواهم رفرش شود! 
> 
> پیشاپیش ممنون.


چرا دوباره بایندش نمیکنی؟

----------


## Hell Lord

> چرا دوباره بایندش نمیکنی؟


دیتا گرید خالی تحویلمان میدهد این وی بی پدر سگ!  :خیلی عصبانی:

----------


## ostovarit

> دیتا گرید خالی تحویلمان میدهد این وی بی پدر سگ!


خودتو کنترل کن  :لبخند گشاده!: 
دیتابیس چک کن اگر داده داری باید نشون بده!
نام دیتاگرید که بایند کردی و select رو چک بکن ...
کدت رو بزار چون همچین چیزی ممکن نیست باید یک خطا تو کدت داشته باشی ...

----------


## Hell Lord

همه چیز درست است، عملیات حذف هم انجام میشود .... 
دیتا ست که توسط ویژوال ساخته شده، دیتاگرید هم که اطلاعاتش را دستی وارد کردم. (کدی در کار نیست)
فقط زمانی که این کد را برای بعد از عملیات Query مینویسم، دیتاگرید تغییر میکند، اما، خالی میشود! 
Query ها هم اجرا میشود.
datagridview1.datasource = projectDataSet1
این باید باشد؟

----------


## ostovarit

> دیتا ست که توسط ویژوال ساخته شده، دیتاگرید هم که اطلاعاتش را دستی وارد کردم. (کدی در کار نیست)


اگر منظورتون اینه که ویزاردی کار کردید که باید بعد از حذف بایند کنید باز ... ( نبایدم مشکلی باشه!)
یک تستی بکنید و گرید رو با کد بایند کنید و در EditCoulmn گرید فیلدها رو در DataProperty مشخص کنید

کد بایند:

           SqlDataAdapter    da = new SqlDataAdapter("select * from RegCustomer", new myConnection().Cnn);
             myDataSet   ds = new myDataSet();
                SqlCommandBuilder scb = new SqlCommandBuilder(da);
                da.Fill(ds.RegCustomer);
                dataGridViewSpesific1.DataSource = ds.RegCustomer;

----------


## Mehdi6052

با سلام

آقای Hell Lord برای اینکه تغییرات در دیتاگرید اعمال شود باید بعداز عمل ذخیره، دیتاست را Clear نمایی و دوباره آن را از اطلاعات پر نمایی.

----------


## ho_612

آقا دستور اضافه کردن یه Button به یکی از ستون های دیتا گرید چیه؟؟
می خوام هروقت روی سلولی کلیک کرد به شکل دکمه درآد

----------


## masoudcarpet

من یه برنامه دیدم وقتی جستجو میکردیم دیتا گرید رکوردهاش به ترتیب های لایت میشد و این انتخاب به سمت رکورد جستجو شده حرکت میکرد و وقتی به رکورد مورد نظر می رسید STOP میکرد اگه میشه بگید چه کار کنم که وقتی جستجو میکنم به جای اینکه فقط رکورد مورد نظرم فیلتر بشه و نمایش داده بشه همه رکوردها باشن و فقط انتخاب بره روی رکورد مذکور ، ضمنا با روشی که توی اون برنامه توضیح دادم 
ضمنا" من با این کد جستجو میکنم:
loaddata(" where (" + search + " like N'%" + TextBox1.Text + "%')")

----------


## Hell Lord

ببخشید بنده باز مزاحم شدم، من اگر دیتا گریدم به هیچ دیتا سورسی متصل نباشد و بخواهم ردیف اضاف کنم به صورت دستی، چطور هستش؟
یک ردیف را فکر کنم میتوانم ایجاد کنم، اما ستون هایش چی!؟
با توجه به اینکه از قبل 3 سطر در بالا ایجاد کرده ام ( همان  ردیفی که ستون های مشخصه ی  اطلاعات درش وجود دارند(ستون های دیفالت دیتا گرید))
ممنون میشم ، کلی گشتم اما گیج شدم فقط  :خجالت:

----------


## nasim bahari

سلام.......

دوست عزیز برای اضافه کردن سطر و ستون از کد زیر استفاده کن.....

البت باید بدونی که برای ساختن یه سطر باید حتماً حداقل یه ستون داشته باشی........پس اول ستون رو بساز و بعد سطر رو........


   Me.DataGridView1.Columns.Add("name", "header")
        Me.DataGridView1.Rows.Add()

موفق باشی

----------


## mahdi1373

سلام دوستان!

میشه در یک خانه از دیتاگرید، Progress bar گذاشت؟

----------


## ostovarit

> سلام دوستان!
> 
> میشه در یک خانه از دیتاگرید، Progress bar گذاشت؟


بله میشه نمونه ای از لیست ویو رو براتون میزارم میتونید ازش ایده بگیرید یا اصلا همین رو استفاده کنید ...
موفق باشید

----------


## Juventus FC

سلام بر اساتید

من یک DataGrid دارم که ستون های مختلفی دارد. یکی از این ستون ها مربوط به "قیمت فروش" میشود.

من چند تا Text Box  و یک Command Button گذاشتم برای جستجو گذاشتم.

حالا میخوام یک وضعیتی درست کنم که وقتی کاربر اون جنس مورد نظر را جستجو کرد مجموع قیمت های فروخته شده از اون جنس در یک Text Box نمایش داده شود.

مثلا کاربر وارد کند:

نام جنس : کاغذ        از تاریخ : 1387/12/6      تا تاریخ : 1389/12/6         محاسبه :


میخوام که کاربر بعد از وارد کردن اطلاعاتی از قبیل نام جنس،از تاریخ،تا تاریخ در قسمت محاسبه ج
قیمت تمام کاغذ های فروخته شده از تاریخی که کاربر وارد کرده تا تاریخ مورد نظری که وارد کرده،مجموعشون نمایش داده بشه.

مقلا در قسمت محاسبه بنویسه : 20000   

من تمام کارهای این برنامه را انجام دادم و DataBase درست کردم فقط مشکل من این محاسبه 
جزئی اجناس است.

(عکس زیر گویای همه چیز هست)

----------


## mehdad.koulab

سلام به اين تاپيك هم نگاهي بكنين

Data Grid View Update

----------


## Hell Lord

دوستان ، بنده اگر بخواهم یک شرط در dataset ام بیاورم که این شرط بایک یک متغیر برنامه داخلش باشد، چطور باید انجام دهم؟ آخه داخل دیتا ست که میروم، کوئری را میتوانم تغییر دهم، اما خب متغییری از درون برنامه نویشود داخلش گذاشت!...  :اشتباه: 
راه حل چیست؟

----------


## Hell Lord

در ادامه ی سوال قبل :
این قسمت را که دوست خوبم دادن را خواستم بزنم :
SqlDataAdapter    da = new SqlDataAdapter("select * from RegCustomer", new myConnection().Cnn);
             myDataSet   ds = new myDataSet();
                SqlCommandBuilder scb = new SqlCommandBuilder(da);
                da.Fill(ds.RegCustomer);

                dataGridViewSpesific1.DataSource = ds.RegCustomer;اما نوع SqlDataAdapter وجود ندارد که! ...لطفا یکی کمکم کنه...

----------


## 5mmmmm

سلام
چطور میشه با ماوس عمل اسکرول را روی دیتا گرید انجام داد؟
یا با کلید های جهت نما بین رکورد ها حرکت کرد؟
چطور میشه تنظیم کرد وقتی کلید جهت نما پایین را فشار می دهیم کار تب یا پرش به کنترل بعدی را انجام بده؟
ممنون

----------


## Sal_64

چطور میشه اطلاعات دیتاگریدویو رو داخل فایل اکسس ریخت
توضیح : به وسیله کد نویسی یه فایل اکسس ایجاد کرد ، اطلاعات رو داخلش ریخت و ذخیره کرد
با تشکر

----------


## nowar1352

با سلام بر اساتيد محترم من چگونه ميتوانم در ديتا گريد ويو   ستون بلا استفاده حاشيه سمت راست (  چپ  )  را حذف كنم  
خيلي گشتم  اما به جواب نرسيدم 
يه جا ديدم  كه تو اين ستون  ستون رديف رو ايجاد كردن

----------


## viper2009

سلام
این خصوصیت دیتا گرید را مطابق دستور فالس کن
RowHeadersVisible = False 

و درسته میشه روی همیت ستون ردیف ایجاد کرد که در واقع نقاشی میشه کدش را بعداً می گذارم (اما وقتی رکوردها افزایش میابد به هم ریخته می شود)

----------


## viper2009

یک فایل  dll ضمیمه کردم که وقتی به کامپوننت های ویژوال اضافه می کنی یک امکان هم به دیتا گرید اضافه می شه که با  انتخاب آن بطور اتوماتیک ستون ردیف ساخته خواهد شد و شما ستون Code را می  توانید پنهان کنید.

----------


## hosseines

چطور می تونم رکوردی از دیتاگرید را براساس فیلدی رنگش رو تغییر بدم.

----------


## rezayeman

> اینم تابعی برای اینکه سطرهای DataGrideView رو با دو رنگ مختلف به صورت یکی در میون ببینید تا خوندنش راحتتر باشه.
> 
>  
>  Private Sub DG_backcolor()
>         Dim i As Integer
>         For i = 1 To (DataGrideView1.Rows.Count - 1) Step 2
>             DataGrideView1.Rows(i).DefaultCellStyle.BackColor = Color.Lavender
>         Next
>     End Sub




با ابن 2 خط کد خیلی راحت میتونی یکی در میان سطرها را رنگی کنید. این دو خط را در formload قرار بدین.

DataGrideView1.DefaultCellStyle.BackColor = Color.LightYellow; 
DataGrideView1.AlternatingRowsDefaultCellStyle.Bac  kColor = Color.LemonChiffon;

----------


## rezayeman

سلام دوستان

من یه دیتا گرید دارم که یک ستون اون چک باکس هستش.
چطوری میتونم کاری کنم که وقتی کاربر چک باکس هر سطر رو انتخاب کرد اون سطر select بشه و همچنین بتونه چندین سطرو انتخاب کنه.

تقریبا مثل mail توی یاهو.

من با select کردن چندتا سطر به صورت همزمان بدون فشردن کلید Ctrl مشکل دارم.

----------


## rezayeman

کسی نیست جواب سوال مارو بده؟

----------


## 5mmmmm

دوستان کسی در مورد نحوه کارکردن با گریدهای جانوس اطلاعاتی داره؟یا فایل راهنمای فارسی؟
ممنون

----------


## mory2008

با عرض سلام خدمت دوستان 
من تو برنام هام تقریباً از همه کامپوننت های گرید ویو استفاده کردم که بالاخره تو یجا دچار مشکل شده و کارائی مورد نظر را نخواهد داشت 

کاشکی میشد دوستان تجربیات خودشونو به شراکت گذاشته تا یه ابزار grid با امکانات گروه بندی ، فیلترینگ ، سطر محاسباتی برای نمایش محاسبات ، فریز کردن سطر نمایش تصویر زمینه  و از همه مهمتر راست به چپ شدن و نمایش انواع داده ها در ستو نها و نمایش درختی را بسازیم و همه دوستان از این ابزار استفاده کنند

کد زیر ابتدائی ترین امکانات گرید رو داره از دوستان خواهش میکنم که کمک کنند کاملش کنم


public class DataGridView : System.Windows.Forms .DataGridView
    {
        private System.Drawing.Image image;

        [DllImport("user32.dll")]
        private static extern IntPtr GetDCEx(IntPtr hwnd, IntPtr hrgnclip, uint fdwOptions);

        [Category("Appearance")]
        public System.Drawing.Image Image
        {
            get
            {
                return this.image;
            }
            set
            {
                this.image = value;
                base.Invalidate();
            }
        }

        protected override void PaintBackground(Graphics graphics, Rectangle clipBounds, Rectangle gridBounds)
        {
            base.PaintBackground(graphics, clipBounds, gridBounds);
            if (this.image != null)
                graphics.DrawImage(this.Image, gridBounds);
        }

        protected override void OnScroll(ScrollEventArgs e)
        {
            base.OnScroll(e);
            this.Refresh();
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            DataGridViewCellStyle style = new DataGridViewCellStyle();
            style.BackColor = SystemColors.GradientActiveCaption;
            this.AlternatingRowsDefaultCellStyle = style;
            this.RowHeadersWidth = 35;

            this.RowHeadersDefaultCellStyle.Padding = new Padding(this.RowHeadersWidth);
        }

        protected override void OnRowPostPaint(DataGridViewRowPostPaintEventArgs e)
        {
            base.OnRowPostPaint(e);

            SolidBrush brushes = new SolidBrush(Color.Black);
            if (base.RightToLeft == RightToLeft.Yes)
                e.Graphics.DrawString((e.RowIndex + 1).ToString(), this.Font, brushes, base.Width - e.RowBounds.Location.X - 15, e.RowBounds.Location.Y + 4);
            else
                e.Graphics.DrawString((e.RowIndex + 1).ToString(), this.Font, brushes, e.RowBounds.Location.X + 15, e.RowBounds.Location.Y + 4);
        }

    }

----------


## JaVa

با سلام و خسته نباشید.

اشتباه اومدی!!!!
تالار C#‎ دو کوچه پایینتره.
سئوال هر زبان برنامه نویسی در تالار مختص به خودش پرسیده میشه.

موفق باشید.

----------


## tajadini

:قهقهه: دمت گرم دادا

----------

