PDA

View Full Version : بالا و پايين رفتن در گريد



sh2007
سه شنبه 01 شهریور 1390, 07:45 صبح
دوستان سلام
من يك فرم براي جستجوي افراد گذاشتم كه كاربر با وارد كردن نام خانوادگي توي تكست باكس اطلاعات افراد توي گريدي كه پايين تكست باكس هست نمايش داده مي شود
دوستان احتمال دارد جستجوي كاربر 5 يا 6 ركورد نتيجه داشته باشد
من چطوري كد بنويسم كه وقتي كاربر توي تكست باكس كليد هاي پايين و بالاي جهت نما را فشار مي دهد مكان نما در گريد به بالا و يا پايين برود

ممنون

Behzad_MCP
سه شنبه 01 شهریور 1390, 10:16 صبح
دوست عزیز این موضوع را میتونی تو Key_Down تکست باکس کنترل کنی

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyValue = Keys.Down Then
'Write Your Code Here
End If
End Sub

sh2007
سه شنبه 01 شهریور 1390, 11:16 صبح
دوست من اين درست ولي براي رفتن به گريد كه مستقيم از ديتاست و تيبل ادابتر تغذيه مي شه چطور عمل كنم

Behzad_MCP
سه شنبه 01 شهریور 1390, 11:41 صبح
بفرمایید دوست عزیز

Private Sub txtFirstName_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtFirstName.KeyDown
If e.KeyValue = Keys.Down Then
If Me.dgvPersons.SelectedRows.Count = 0 Then
Me.dgvPersons.Rows(0).Selected = True
Me.dgvPersons.Rows(Me.dgvPersons.SelectedRows(0).I ndex + 1).Selected = True
Else
Me.dgvPersons.Rows(Me.dgvPersons.SelectedRows(0).I ndex + 1).Selected = True
End If
ElseIf e.KeyValue = Keys.Up Then
If Me.dgvPersons.SelectedRows.Count = 0 Then
Me.dgvPersons.Rows(0).Selected = True
Me.dgvPersons.Rows(Me.dgvPersons.SelectedRows(0).I ndex - 1).Selected = True
Else
Me.dgvPersons.Rows(Me.dgvPersons.SelectedRows(0).I ndex - 1).Selected = True
End If
End If
End Sub

Behzad_MCP
سه شنبه 01 شهریور 1390, 11:55 صبح
فقط روی ایندکس های اول و آخر اررور میده که اونم با اضافه کردن یه شرط درست میشه :

Private Sub txtFirstName_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtFirstName.KeyDown
If e.KeyValue = Keys.Down Then
If Me.dgvPersons.SelectedRows.Count = 0 Then
Me.dgvPersons.Rows(0).Selected = True
If Not Me.dgvPersons.SelectedRows(0).Index = Me.dgvPersons.Rows.Count - 1 Then
Me.dgvPersons.Rows(Me.dgvPersons.SelectedRows(0).I ndex + 1).Selected = True
End If
Else
If Not Me.dgvPersons.SelectedRows(0).Index = Me.dgvPersons.Rows.Count - 1 Then
Me.dgvPersons.Rows(Me.dgvPersons.SelectedRows(0).I ndex + 1).Selected = True
End If
End If
ElseIf e.KeyValue = Keys.Up Then
If Me.dgvPersons.SelectedRows.Count = 0 Then
Me.dgvPersons.Rows(0).Selected = True
If Not Me.dgvPersons.SelectedRows(0).Index = 0 Then
Me.dgvPersons.Rows(Me.dgvPersons.SelectedRows(0).I ndex - 1).Selected = True
End If
Else
If Not Me.dgvPersons.SelectedRows(0).Index = 0 Then
Me.dgvPersons.Rows(Me.dgvPersons.SelectedRows(0).I ndex - 1).Selected = True
End If
End If
End If
End Sub

sh2007
پنج شنبه 03 شهریور 1390, 09:37 صبح
دوستان با این کدها براحتی می توان توی گرید بالا و پایین رفت اما آیا روشی هست که یک مثلت کوچک توی ردیفهای گرید که نشاندهنده انتخاب رکورد می باشد نیز همزمان با این انتخابها پایین بیاد چون بالا و پایین رفتن این مثلث بیانگر انتخاب داده های درون گرید نیز می باشد
ممنون

Behzad_MCP
پنج شنبه 03 شهریور 1390, 13:30 عصر
دوست عزیز راهی که به نظر من میرسه این هست که یه ستون دیگر به گرید اضافه بشه و از نوع عکس باشه بعد تو SelectedRowChanged گریدمون بیایم عکسشو عوض کنیم مثلا اگه Selected = True بود اون فلش باشه و اگه نبود مثلا یه عکس دیگه باشه :)

sh2007
پنج شنبه 03 شهریور 1390, 22:16 عصر
دوست من آخه مشکل کدها اینه که فقط بصورت هایلاتی یا سلکت شدن رو گرید حرکت می کنه و در حقیقت یک نمایش بالا و پایین رفتن سلکت هاست
مثلا اگه گرید 100 تا رکورد داشته باشه با این کدها نمی توانی رکوردهای بالاتر از 10 تا رو ببنی چونکه اسکرول ر و به پایین گرید کار نمی کنه