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

vb.net datagrid i keydown

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

[ Pregleda: 3329 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kopca

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



Profil

icon vb.net datagrid i keydown09.12.2004. u 09:56 - pre 235 meseci
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
 
Odgovor na temu

akrosoft
Dusan Mihajlovic
Beograd

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

Sajt: www.RoditeljPortal.com


Profil

icon Re: vb.net datagrid i keydown09.12.2004. u 12:07 - pre 235 meseci
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.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: vb.net datagrid i keydown09.12.2004. u 13:18 - pre 235 meseci
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, ''))



Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

kopca

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



Profil

icon Re: vb.net datagrid i keydown09.12.2004. u 14:28 - pre 235 meseci
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
 
Odgovor na temu

Untouchabble
Untouchabble
Beograd

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



Profil

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

Untouchabble
Untouchabble
Beograd

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



Profil

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

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

[ Pregleda: 3329 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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