Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

vb.net datagrid i keydown

[es] :: .NET :: .NET Desktop razvoj :: vb.net datagrid i keydown

[ Pregleda: 1500 | Odgovora: 5 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kopca

Član broj: 14307
Poruke: 112
*.14.eunet.yu.



Profil

icon vb.net datagrid i keydown09.12.2004. u 09:56

Dobro vise nema smisla sa ovim datagridom se patim nenormalno. Imam grid koji se update-uje sa event handlerom grdOpstine_CurrentCellChanged. Datagrid grdOpstine radi lepo, ali kad se korisnik pozicionira na prvu celiju dela za unosenje novog reda, unese vrednost i lupi Enter, kursor skoci u sledeci red za dodavanje. Ako je u prethodnom redu za dodavanje bilo nekih null vrednosti za polja koja ne dozvoljavaju null, sqlException se pravi.


Private Sub grdOpstine_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles grdOpstine.CurrentCellChanged
Try
adptOpstine.Update(dsOpstine)
Catch ex As System.Data.SqlClient.SqlException
MsgBox("grdOpstine_CurrentCellChanged()" & vbCrLf & ex.Message,MsgBoxStyle.Exclamation, "Exception")
End Try
End Sub

Probao sam da regulisem keydown datagrida, ali on ne reaguje. Izgleda da se dogadjaji sa tastature na gridu handle-uju automatski. Kako da regulisem to na, recimo, sl. nacin? Korisnik dok lupa Enter pomera se po tekucem redu i tek na zadnjoj celiji skoci na sledeci red? Znaci u grdOpstine_keydown moram da se pitam da li je trenutna celija poslednja, ako jeste skoci u novi red, ako nije skoci u susednu celiju.

Glavno sta zelim da izbegnem je explicitni update koji korisnik pokrece nekim dugmetom... Kako da postignem da kako korisnik kuca u gridu, tako da update-uje bazu, ako ne sa currentcellchanged eventom?

Private Sub grdOpstine_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles grdOpstine.KeyDown
MsgBox(e.KeyCode)
End Sub
kopca
09.12.2004. u 09:56 

akrosoft
Dusan Mihajlovic
Beograd

Član broj: 31201
Poruke: 125
*.yubc.net.

Sajt: www.RoditeljPortal.com


Profil

icon Re: vb.net datagrid i keydown09.12.2004. u 12:07
Probaj da uradis validaciju unesenih podataka pre update-a. Ili, ako ti je grid vezan za DataTable, onda mozes da koristis dogadjaje DataTable-a (ColumnChanging, ColumnChanged, RowChanging, RowChanged) i da radis validaciju pre nego azuriras podatke u currentCellChanged eventu.

Sto se tice izmene shortucut keys-a za grid, nisam siguran da li postoji neka opcija na samom gridu da se to promeni, ali uvek se mozes sa overridovanjem ProcessKeyPreview-a da ih kontrolises.
Znaci, overridujes ProcessKeyPreview, hvatas KeyDown messages, keyCode = Keys.Enter, proveravas i druge uslove (aktivna kontrola, poslednja celija u gridu itd), i radis SendKeys.Send("{Tab}"), i return true, a u svakom drugom slucaju zoves baznu implementaciju ProcessKeyPreview-a da odradi ono sto bi uradio po defaultu.
09.12.2004. u 12:07 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

Moderator
Član broj: 17944
Poruke: 1690
207.228.158.*



Profil

icon Re: vb.net datagrid i keydown09.12.2004. u 13:18
Imas i alternativu da u samom SQLu resis ovo, ako se adptOpstine oslanja na stored procedure, izmeni insert i update SP, tako da ako adapter posalje null, stored procedura ubaci neku default vrednost:
npr

insert into tabela (nonnullpolje) values (IsNull(@Parametar, ''))



▪ The word 'politics' is derived from the word 'poly', meaning 'many', and the word 'ticks', meaning 'blood sucking parasites' - Larry Hardiman
▪ If the good guy gets the girl, it's rated PG; if the bad guy gets the girl, it's rated R; and if everybody gets the girl, it's rated X
▪ Illegal aliens have always been a problem in the United States. Ask any Native American
09.12.2004. u 13:18 

kopca

Član broj: 14307
Poruke: 112
*.134.eunet.yu.



Profil

icon Re: vb.net datagrid i keydown09.12.2004. u 14:28
Evo resenja...

Public Class DataGridKeyEvents
Inherits System.windows.Forms.DataGrid
'Private Const WM_KEYDOWN = &H100
'Private Const WM_KEYUP = &H101

Protected Overrides Function ProcessCmdKey(ByRef msg _
As System.Windows.Forms.Message, ByVal keyData As _
System.Windows.Forms.Keys) As Boolean

If msg.WParam.ToInt32() = CInt(Keys.Enter) Then
Me.Parent.PreProcessMessage(msg)
'Ovde ide kod za korisnicki 'Enter'
SendKeys.Send("{Tab}")
Return True
Else
Return MyBase.ProcessCmdKey(msg, keyData)
End If
End Function 'ProcessCmdKey

End Class

HVALA LJUDI...SENDKEYS MI JE TREBALO...
kopca
09.12.2004. u 14:28 

Untouchabble
Beograd

Član broj: 77524
Poruke: 91
*.adsl.sezampro.yu.



Profil

icon Re: vb.net datagrid i keydown07.04.2006. u 14:27
I šta se dalje radi? Kako da implementiram ovo u program, treba li da koristim neki event handler ili šta?
07.04.2006. u 14:27 

Untouchabble
Beograd

Član broj: 77524
Poruke: 91
*.adsl.sezampro.yu.



Profil

icon Re: vb.net datagrid i keydown09.04.2006. u 13:21
Provalio sam, jednostavno promeniš svuda gde se pojavljuje DataGrid sa DataGridKeyEvents. Čisto radi drugih amatera, da se ne cimaju.
09.04.2006. u 13:21 

[es] :: .NET :: .NET Desktop razvoj :: vb.net datagrid i keydown

[ Pregleda: 1500 | Odgovora: 5 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.