[ krdr @ 10.05.2005. 01:59 ] @
POstoje li komponente koje rade sa bazama (prepoznaju podatke) a da se ponasaju kao da su Delphijeve?

Odnosno, ja u Data Gridu selektujem neki red, a ostala polja se popune, a da ne moram da pisem nikakav kod?
[ dusty @ 10.05.2005. 15:28 ] @
Hmmm, da bindujes sve kontrole za isti data source ?!
BindingManager bi trebao da odradi populaciju drugih bindovanih kontrola.
[ krdr @ 10.05.2005. 18:14 ] @
To sam i radio - ne radi na taj nacin
[ mmix @ 10.05.2005. 19:06 ] @
Nije mu top problem, kao okoreli Delphievac, kontam sta hoce
On misli da kad doda novi red u grid da se sva polja postave na njihove default vrednosti. Tako radi Delphi grid.

Medjutim .NET grid ne radi bas tako direktno. Da bi ostvario ovo u WinForms (nisam proverio ali mislim da je neizvodljivo u asp.net gridu) treba da uradis sledece:

1. DataGrid da vezes na tipizirani DataSet
2. U DataSet shemi, za zeljenu tabelu nadji polje iz tabele koje hoces da ima pocetnu vrednost, lociraj property "default" u "Properties" prozoru i unesi vrednost.

To sto tabela u bazi ima default vrednost ne znaci nista gridu, mora da bude uneseno i u dataset. Ono sto je mene najvise nerviralo u .NET xsd shemi je da kad prevucete tabelu iz MSSQL (ili bilo koje druge) baze na xsd vs.net ucita definiciju svih polja iz tabele, ali ne prenese definisane default vrednosti Kad prebacujete tabelu sa 100 polja od koji 80 ima default vrednosti, eto sljake



[ mmix @ 10.05.2005. 19:14 ] @
Ups, izvinjavam se, omasih temu i to debelo
(ajd da ne brisem ako nekom zatreba)

Al evo resenja i za ovaj problem. Recimo da imas dataset koji se zove dataSet1 i u njemu tabelu Users.
Grid si namestio da mu je DataSource = "dataSet1.Users" i DataMember = null, a treba da bude:

DataSource = dataSet1
DataMember = Users

preraspodeli ovako i radice ti ako si edit controle bindovao iz dizajnera. Onda ce sistem inicirati isti CurrencyManager za sve kontrole. U suprotnom ce biti dva currency managera, jedan za tabelu samu za sebe i jedan za tabelu iz dataseta. Iako su te dve tabele ustvari ista tabela, dva currency manager-a ce imati dva razlicita row pointera nad njom.
[ krdr @ 11.05.2005. 07:46 ] @
To mi je trebalo!

Oba odgovora su mi trebala!

A kako da namestim da selektujem ceo red? (ili da ja odustanem od vs.neta, neke stvari su dosta komplikovane u odnosu na delphi :)
[ mmix @ 11.05.2005. 12:36 ] @
Verovatno si sakrio Row Header tako što si prebacio RowHeadersVisible na false. To je jedini način da korisnik selektuje ceo red.
[ Željko @ 11.05.2005. 14:52 ] @
Citat:
mmix rece: Verovatno si sakrio Row Header tako što si prebacio RowHeadersVisible na false. To je jedini način da korisnik selektuje ceo red.


Selekcija celog row-a u datagrid-u moze da se uradi ako user click-om na RowHeader ali moze i ovako:

Code:

    Private Sub grid_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles grid.MouseDown
        Dim pt = New Point(e.X, e.Y)
        Dim hti As DataGrid.HitTestInfo = grid.HitTest(pt)
        If hti.Type = grid.HitTestType.Cell Then
            grid.CurrentCell = New DataGridCell(hti.Row, hti.Column)
            grid.Select(hti.Row)
        End If
    End Sub


Kada user click-ne na datagrid cell selektuje se ceo row.

pozdrav Željko
[ krdr @ 11.05.2005. 18:20 ] @
@Zeljko

Hvala, ali tvoj primer je za Delphi, a meni treba za net :). U delphiju samo postavi row select na true :)

Ipak, hvala, lep je trik
[ Željko @ 11.05.2005. 19:15 ] @
Citat:
krdr rece: @Zeljko
Hvala, ali tvoj primer je za Delphi, a meni treba za net :)


Ono sto sam napisao je VB.Net kod, a sto se tice Delphi-ja, nisam nista radio jos od prve godine fax-a (to je bila verzija Delphi 1)

pozdrav Željko

[ krdr @ 12.05.2005. 03:27 ] @
Jeste, nepazljivo sam citao :)
Samo sam pogledao strukturu :)

Mislim da cu iskoristiti (ali kako c#)

Hvala.