PDA

View Full Version : رفتن به رکورد بعدی دیتاگرید



msadgd
دوشنبه 02 اردیبهشت 1387, 22:37 عصر
با سلام خدمت شما دوستان عزیز.
من یک Dtagridview دارم که بعداز فراخوانی اطلاعات و قرار دادن اونها در این دیتا گرید می خوام با زدن یک دکمه مثلا یه دکمه شبیه دکمه next به رکورد بعدی برم و همینطور با هربار زدن این دکه تا آخر جدول رو بشه پیمایش کرد به صورتی که هم مشخص بشه الآن رکورد جاری کدوم سطر رو نشون میده و هم چندتا textbox رو از اطلاعات بعضی ستونها بخونم و نمایش بده.
ممنون میشم کمک کنید.
(البته توی datagrid که مربوط به VS.2003 بود این کار خیلی راحت بود ولی توی 2005 که datagridVIEW اومد نمیدونم چکار باید کرد؟)

rezaei manesh
سه شنبه 03 اردیبهشت 1387, 08:31 صبح
روش دستی:
برای انتخاب سطر جاری


Grid1.Rows(i).Selected = False
Grid1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
Grid1.CurrentRow.Selected = False
Grid1.Rows(i).Selected = True

Try
Grid1.Rows(i).Cells(4).Selected = True
Catch 'ex As Exception
'grid1.Rows(i).Cells(2).Selected = True
End Try

و برای برداشت اطلاعات


Grid1.Rows(i).Cells("LastName").Value

و برای چک کردن که به اخر رسیده یا نه
شرط زیر


Grid1.CurrentRow.Index=grid1.rowcount

Dariuosh
سه شنبه 03 اردیبهشت 1387, 09:52 صبح
احتمالاً گرید رو به یه بایندینگ سورس وصل کردی دیگه از اون استفاده کن
در ضمن از کنترل بایندینگ نویگیتور هم میتونی استفاده کنی

علیرضا مداح
سه شنبه 03 اردیبهشت 1387, 17:08 عصر
سلام ،
برای پیمایش بین رکوردها و نمایش مقادیر سطر فعلی در دیتاگرید ویو و کامپوننتهای دیگر و اعمال DataBinding بهتر است از BindingSource و متدهای MoveFirst , MoveNext,MoveLast,MovePrevious استفاده نمایید.

msadgd
چهارشنبه 04 اردیبهشت 1387, 21:52 عصر
سلام ،
برای پیمایش بین رکوردها و نمایش مقادیر سطر فعلی در دیتاگرید ویو و کامپوننتهای دیگر و اعمال DataBinding بهتر است از BindingSource و متدهای MoveFirst , MoveNext,MoveLast,MovePrevious استفاده نمایید.

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

علیرضا مداح
چهارشنبه 04 اردیبهشت 1387, 22:02 عصر
دوست عزیز مقاله زیر را مطالعه نمایید :
http://www.codeproject.com/KB/grid/BindSourceBindingNavCS.aspx

msadgd
یک شنبه 08 اردیبهشت 1387, 19:20 عصر
با سلام مجدد
آقای رضایی منش عزیز این کدهایی که شما دادی فقط نحوه انتخاب سطرهای دیتاگرید ویو رو عوض میکنه و فقط سطر اول جدول انتخاب میشه و جلوتر هم نمیره.
دوستان همونطوری که در پست قبلی اشاره کردم من از ویزادها استفاده نمیکنم و از طریق کد دیتاستم رو پر میکنم و میخوام از طریق کد هم با زدن یک دکمه به رکورد بعدی برم به طوری که رکورد فعلی من توی جدول مشخص باشه.
آقای مداح عزیز مثال گذاشته شده شما هم با زبان C هست که من اصلا کار نکردم و حتی روی سیستم هم نصب نیست.
ببینید من با کد زیر راحت می تونم بین رکوردهای دیتاست جابجا بشم ولی این جابجایی متاسفانه در دیتاگرید ویو نشون داده نمیشه درصورتی که در دیتاگرید 2003 به راحتی نشون داده میشد.


Me.BindingContext(ds, "table").Position = Me.BindingContext(ds, "table").Position + 1

با کد بالا راحت میشه بین رکوردها جابجا شد و محتوای فیلدهای رکورد رو هم در تکست ها نشون داد ولی همونطور که گفتم توی گرایدویو اون فلش مثلثس کوچک که نشون دهنده رکورد جاری هست جابجا نمیشه.:ناراحت: مشکل من تنها همینجاست.
باز هم از لطف و توجهتون ممنونم.

rezaei manesh
یک شنبه 08 اردیبهشت 1387, 19:31 عصر
من با همون کد کاری که شما نی گشد رو انجام می دم
فقط باید دقت کنی که شماره ستونی رو که اینجا می دید رو در حالت نمایش هم داشته باشین


Grid1.Rows(i).Cells(4).

اگر درست کار نمی کنه 4 رو تغییر بده

msadgd
چهارشنبه 11 اردیبهشت 1387, 17:44 عصر
من با همون کد کاری که شما نی گشد رو انجام می دم
فقط باید دقت کنی که شماره ستونی رو که اینجا می دید رو در حالت نمایش هم داشته باشین


Grid1.Rows(i).Cells(4).
اگر درست کار نمی کنه 4 رو تغییر بده

جناب رضايي منش با تشكر از توجهتون بايد بگم كه من باشماره ستون مشكلي ندارم كد شما اصلا ركورد رو جابجا نميكنه.
اصلا بگذريم. ظاهرا اين datagridview زيادي پيشرفته شده، دوستان اگر محبت كنند بگن در مورد DataGrid كه در نسخه 2003 استفاده ميشد، اگر بخوايم با كليك كردن برروي يك سطر يا سلولي از جدول مشخصات بعضي از فيلدهاي همون سطر توي مثلا Textbox ها نشون داده بشه چكاربايد كرد.
ممنون مي شم واقعا.
سلامت و پيروز باشيد.:قلب:

rezaei manesh
چهارشنبه 11 اردیبهشت 1387, 17:51 عصر
من با همین رکورد رو هم جابجا می کنم نمی دونم مشکل شما چیه باور کنید خیلی سادست!
من خیلی وقت هست که با دیتا گراید کار نکردم اما اونم باید یک متد با عنوان row -getrow-curentrow و از این دست متد ها داشته باشه که سطر جاری رو برگردونه

mostafaaa
شنبه 14 اردیبهشت 1387, 18:23 عصر
جناب رضايي منش با تشكر از توجهتون بايد بگم كه من باشماره ستون مشكلي ندارم كد شما اصلا ركورد رو جابجا نميكنه.
اصلا بگذريم. ظاهرا اين datagridview زيادي پيشرفته شده، دوستان اگر محبت كنند بگن در مورد DataGrid كه در نسخه 2003 استفاده ميشد، اگر بخوايم با كليك كردن برروي يك سطر يا سلولي از جدول مشخصات بعضي از فيلدهاي همون سطر توي مثلا Textbox ها نشون داده بشه چكاربايد كرد.
ممنون مي شم واقعا.
سلامت و پيروز باشيد.:قلب:
فکر کنم منظورتون اینجوری باشه
این کد مقدار ستون پنجم از سطر جاری رو توی تکست باکس نشون میده

TextBox1.Text = DataGridView1.CurrentRow.Cells(4).Value این کد هم سطر جاری رو یکی جلو میبره و اگه به سطر آخر رسید ، دوباره به سطر اول بر میگرده

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim NextRow, RowCount As Integer
RowCount = DataGridView1.Rows.Count
NextRow = DataGridView1.CurrentRow.Index
If DataGridView1.CurrentRow.Index = RowCount - 1 Then NextRow = -1
DataGridView1.Rows(NextRow + 1).Cells(0).Selected = True
End Sub

msadgd
شنبه 14 اردیبهشت 1387, 18:31 عصر
جناب مصطفي اين كد كاملا مشخصه كه چكار مي كنه ولي مسئله اينجاست كه از DataGridView به DataGrid رفت.
از دوستان گرامي مخصوصا كسايي كه VB2003 يا VB6 كار كردن تقاضا دارم به من در اين مورد كمك كنن.
طرح دوباره مسئله : ما مي خوايم با كليك روي سطر يا ستونهايي از Data Grid محتويات ستونهاي سطر جاري در چند TextBox نمايش داده بشه.
مطمئنم كه اين كار شدنيه چون برنامه هايي كه ديدم در زمانهايي كه GridView نبوده اين كار رو مي كردن.
از دوستان خواهشمندم در اين مورد كمكم كنند.

mostafaaa
شنبه 14 اردیبهشت 1387, 18:42 عصر
چرا از vb2005 و همین datagridview استفاده نمی کنید.
این کاری که شما میگید توی vb2005 مثل آب خوردن انجام میشه..

msadgd
شنبه 14 اردیبهشت 1387, 19:14 عصر
مصطفي جان بابت كد واقعا ممنون. ولي من الآن امتحان كردم با اين كد (اگر خودت هم امتحان كني) نشانگر جدول ديتاگرايدويو پايين نميره پس ركورد جاري هميشه ركورد 0 يا همون خط اول هست. مشكل من با گرايد ويو هم همينه كه اين نشانگر از جاش تكون نمي خوره وگرنه كدهاي خيلي ساده اي براي اين كار هست. يك بار كدت رو Test كن مي بيني.
بازم خيلي ازت ممنونم.

mostafaaa
شنبه 14 اردیبهشت 1387, 19:54 عصر
من قبل اینکه کد رو بزارم امتحانش کردم.
یه نکته کلیدی توی این کد اینه که حتما باید یه سلول رو هم توی سطر مشخص کنی مثلا این کد
فقط یه سطر رو highLight میکنه ولی select نیمکنه و نشانگر رو به سطر بعد نمیبره.

DataGridView1.Rows(NextRow + 1).Selected = True
ولی این کد چرا

DataGridView1.Rows(NextRow + 1).Cells(0).Selected = True
من مطمعنم که این جواب میده ، چون خودم مشکل مشابه شما رو داشتم و اینجوری حلش کردم.
در هر صورت امیدوارم موفق باشید.

msadgd
شنبه 14 اردیبهشت 1387, 23:02 عصر
من قبل اینکه کد رو بزارم امتحانش کردم.
یه نکته کلیدی توی این کد اینه که حتما باید یه سلول رو هم توی سطر مشخص کنی مثلا این کد
فقط یه سطر رو highLight میکنه ولی select نیمکنه و نشانگر رو به سطر بعد نمیبره.

DataGridView1.Rows(NextRow + 1).Selected = Trueولی این کد چرا

DataGridView1.Rows(NextRow + 1).Cells(0).Selected = Trueمن مطمعنم که این جواب میده ، چون خودم مشکل مشابه شما رو داشتم و اینجوری حلش کردم.
در هر صورت امیدوارم موفق باشید.

آقا مصطفاي گل اين دوتا كدي كه شما گذاشتي كه فرقي با هم نميكنه يكيش سطر رو سلكت مي كنه يكييش سلول رو. به هرحال من همه كدهايي كه گذاشته بودي رو عينا past كردم در دو جاي مختلف هم امتحان كردم ولي نميشه دليلش هم اينه كه اشاره گر سطر هاي جدول به خط بعدي اشاره نميكنه درنتيجه ايندكس سطر در هربار كليك روي باتن روي همون سطر اول يعني 0 مي مونه بنابراين با اين كد ما امكان جابجايي فقط يك خط رو داريم. وقتي ديباگ بكني كاملا متوجه مي شي. اگر قبلا اين كد به شما جواب داده حتما جايي يه كد ديگه اي داشتي كه جدول رو وادار به حركت و اشاره به سطر بعدي مي كنه.
به هر حال از توجه شما ممنونم.
دوستان اگر مي تونن روي DataGrideview اين مسئله رو حل كنند ممنون ميشم.
روي DtaGrid مشكل اينه كه مي خوام با كليك روي سطر يا سلول جدول اطلاعات رو توي Textbox ها بريزم.

هركدوم از اين دوتا حل بشه مشكل من هم حل ميشه. ممنونم.
پيروز باشيد

rezaei manesh
یک شنبه 15 اردیبهشت 1387, 08:18 صبح
دوست عزیز ما هرچی می گیم شما هی حرف خودت رو می زنی من می گم این کاری رو که شما می گین رو حداقل روی 20 تا فرم مختلف دارم انجام میدم
اقا اصلا شما همین قسمت پروژه خودت رو یا یه پروژه مثال درست کن همین جا بزار ببین ما چطوری مثل اب خوردن همین کار رو با همین کد ها انجام می دیم!!!!!!!!

masoodp666
یک شنبه 15 اردیبهشت 1387, 10:39 صبح
روي DtaGrid مشكل اينه كه مي خوام با كليك روي سطر يا سلول جدول اطلاعات رو توي Textbox ها بريزم.
خوب برای این کار میتونی TextBox هاتو Bind کنی به همون DataSet ای که DataGridView رو Bind کردی




yourTextBox.DataBindings.Add("Text", DataSet.Tables("your table"), "your column")



در ضمن برای Navigate کردن بین رکوردها حتما از آبجکت Currency Manager استفاده کن خیلی کارو راحت میکنه.

غلامرضا شریفی
پنج شنبه 19 اردیبهشت 1387, 12:42 عصر
آقاي sh قبلا نوشته بودن
DataGridView1.CurrentCell = DataGridView1.Rows(10).Cells(3)

rezayeman
شنبه 05 شهریور 1390, 14:01 عصر
با این روش می تونین انجام بدین
به زبان c# هستش خودتون به vb تبدیل کنید

this.BindingContext[DataGridView1.DataSource].Position +=1

milad7091
یک شنبه 14 اسفند 1390, 23:28 عصر
بچه ها خدایی مصطفی راست میگهو شما ها یه با این کارشو انجام بدین ببینین جواب میده.
من اینو نوشیتم البته توی C جواب داد بهم.
dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex-1].Cells[1].Selected = true;

یادم رفت اینو بگم, این کد برای دکمه BACK استفاده شده.