Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 4.153 pregleda

Najnovija ↓

vb.net datagrid i keydown 09.12.2004. u 10:56 · pre 266 meseci #1
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
Potpis
kopca
Re: vb.net datagrid i keydown 09.12.2004. u 13:07 · pre 266 meseci #2
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.
Re: vb.net datagrid i keydown 09.12.2004. u 14:18 · pre 266 meseci #3
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, ''))


Potpis
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ć
Re: vb.net datagrid i keydown 09.12.2004. u 15:28 · pre 266 meseci #4
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...
Potpis
kopca
Re: vb.net datagrid i keydown 07.04.2006. u 15:27 · pre 250 meseci #5
I šta se dalje radi? Kako da implementiram ovo u program, treba li da koristim neki event handler ili šta?
Re: vb.net datagrid i keydown 09.04.2006. u 14:21 · pre 250 meseci #6
Provalio sam, jednostavno promeniš svuda gde se pojavljuje DataGrid sa DataGridKeyEvents. Čisto radi drugih amatera, da se ne cimaju.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme