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

DataGridView kako da promenim boju polja?

[es] :: .NET :: DataGridView kako da promenim boju polja?

[ Pregleda: 3811 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nesho82
Cacak

Član broj: 133298
Poruke: 14
*.dynamic.isp.telekom.rs.



Profil

icon DataGridView kako da promenim boju polja?25.07.2010. u 22:57 - pre 167 meseci
Kako da promenim bolju polja ili jos bolje celog reda u datagridview-u ako je vrednost nekog polja (integer je podatak) na primer veci od 100(broj)?
 
Odgovor na temu

Mikelly

Član broj: 16730
Poruke: 389
*.crnagora.net.



Profil

icon Re: DataGridView kako da promenim boju polja?26.07.2010. u 14:02 - pre 167 meseci
Moras da hvatas CellFormatting dogadjaj datagridview-a.

U argumentima dogadjaja imas sve sto ti je potrebno (trenutni red i kolona, vrijednost trenutnog polja, i cellstyle objekat cijom promjenom mijenjas vizuelne karakteristike celije). CellFormatting se poziva za svaku celiju grida ponaosob.

Pozdrav.
 
Odgovor na temu

svemirski

Član broj: 220762
Poruke: 15



+1 Profil

icon Re: DataGridView kako da promenim boju polja?26.07.2010. u 15:11 - pre 167 meseci
When binding the datagrid the procedure dgBoundItems is called

Code (csharp):

public void dgBoundItems(object sender, DataGridItemEventArgs e)
{
    foreach(TableCell cell in e.Item.Cells)
    {
        //e.Item.DataSetIndex = broj reda
        //e.Item.Cells.GetCellIndex(cell) = broj kolone ( ako posmatras samo 5 kolonu onda je ovje vrijednost 4 )

        if (e.Item.Cells.GetCellIndex(cell) == 4 && e.Item.DataSetIndex > 0)  // header=0 --  zato pisemo > 0
        {
            //Ako je vrijednost veca od 100 pocrveni to polje

            if (Convert.ToInt32(cell.Text.Trim()) > 100)
            {
                cell.BackColor = Color.Red;
            }
        }
    }
}
 


[Ovu poruku je menjao svemirski dana 26.07.2010. u 16:24 GMT+1]
 
Odgovor na temu

Nesho82
Cacak

Član broj: 133298
Poruke: 14
*.dynamic.isp.telekom.rs.



Profil

icon Re: DataGridView kako da promenim boju polja?26.07.2010. u 23:26 - pre 167 meseci
hvala puno skontao sam resenje...mislim da cu uspeti da prebacim u visual basic posto njega koristim
Hvala jos jednom!
 
Odgovor na temu

svemirski

Član broj: 220762
Poruke: 15



+1 Profil

icon Re: DataGridView kako da promenim boju polja?27.07.2010. u 00:37 - pre 167 meseci
Za automatsku konverziju koristi:

http://www.developerfusion.com/tools/convert/csharp-to-vb/
 
Odgovor na temu

Nesho82
Cacak

Član broj: 133298
Poruke: 14
*.dynamic.isp.telekom.rs.



Profil

icon Re: DataGridView kako da promenim boju polja?27.07.2010. u 14:12 - pre 167 meseci
konvertovao sam kod, ovako izgleda:

Public Sub dgBoundItems(sender As Object, e As DataGridItemEventArgs)
For Each cell As TableCell In e.Item.Cells
'e.Item.DataSetIndex = broj reda
'e.Item.Cells.GetCellIndex(cell) = broj kolone ( ako posmatras samo 5 kolonu onda je ovje vrijednost 4 )

If e.Item.Cells.GetCellIndex(cell) = 4 AndAlso e.Item.DataSetIndex > 0 Then
' header=0 -- zato pisemo > 0
'Ako je vrijednost veca od 100 pocrveni to polje

If Convert.ToInt32(cell.Text.Trim()) > 100 Then
cell.BackColor = Color.Red
End If
End If
Next
End Sub

ali izbacuje mi gresku pre pogretanja programa podvlaci mi TableCell i e.Item.Cells u liniji za for petlju
Da li bi mogao da prepravis cod?


 
Odgovor na temu

svemirski

Član broj: 220762
Poruke: 15



+1 Profil

icon Re: DataGridView kako da promenim boju polja?27.07.2010. u 20:42 - pre 167 meseci
Evo probaj ovako. Farba cijeli red :)

U -events- aktiviraj CellFormatting za svoj DataGridView
Code (csharp):

private void dgFormatiranje(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (e.RowIndex > -1 && e.ColumnIndex == dg.Columns["EmployeeID"].Index)
            {

                if (e.Value != null)
                {

                    int  xyz = Convert.ToInt16(e.Value);

                    if (xyz > 4 )
                    {

                        dg.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Pink;

                    }

                   
                }

            }
        }
 


Ovako izgleda:



Evo ti VB.Net kod:
Code (vbnet):

Private Sub dgFormatiranje(sender As Object, e As DataGridViewCellFormattingEventArgs)
     If e.RowIndex > -1 AndAlso e.ColumnIndex = dg.Columns("EmployeeID").Index Then

          If e.Value IsNot Nothing Then

               Dim xyz As Integer = Convert.ToInt16(e.Value)

               If xyz > 4 Then


                    dg.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.Pink


               End If

          End If
     End If
End Sub

 




[Ovu poruku je menjao svemirski dana 27.07.2010. u 21:58 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

negative7
Ivan Raic

Član broj: 186110
Poruke: 151
*.tel.net.ba.



Profil

icon Re: DataGridView kako da promenim boju polja?11.08.2010. u 17:47 - pre 166 meseci
jel mozes pojasnit kako radi ovo e.value, sta vraca i kako,i kako bas kad pretvoris u int dobijes da je to broj trenutnog reda
 
Odgovor na temu

bojan21
Bojan Zukic
Beograd

Član broj: 101113
Poruke: 251
92.244.151.*



+6 Profil

icon Re: DataGridView kako da promenim boju polja?11.08.2010. u 18:04 - pre 166 meseci
Evo sta pise na MSDN:

Citat:

When you handle the CellFormatting event, the ConvertEventArgs.Value property is initialized with the cell value. If you provide custom conversion from the cell value to the display value, set the ConvertEventArgs.Value property to the converted value, ensuring that the new value is of the type specified by the cell FormattedValueType property. To indicate that no further value formatting is necessary, set the DataGridViewCellFormattingEventArgs.FormattingApplied property to true.

Dakle, u prethodnom primeru e.Value je upravo vrednost polja koje se iscrtava.

Citat:

...i kako bas kad pretvoris u int dobijes da je to broj trenutnog reda

Ne dobije broj trenutnog reda kad ga pretvori u int, nego vrednost tog polja kad ga prevede u int16 tip:
Code (csharp):

int  xyz = Convert.ToInt16(e.Value);
 


Zatim proverava da li je ta vrednost veca od 4, i ako jeste farba ceo red u kojem se nalazi to polje u roze:
Code (csharp):

if (xyz > 4 )
{

   dg.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Pink;

}
 
 
Odgovor na temu

negative7
Ivan Raic

Član broj: 186110
Poruke: 151
*.tel.net.ba.



Profil

icon Re: DataGridView kako da promenim boju polja?11.08.2010. u 18:24 - pre 166 meseci
aha vrijednost polja,u ovom slucaju employeeID,ali mi nije jasno zasto bas tog polja,nigdje nije navedeno da uzima vrijednost tog polja,ili je?
 
Odgovor na temu

bojan21
Bojan Zukic
Beograd

Član broj: 101113
Poruke: 251
92.244.151.*



+6 Profil

icon Re: DataGridView kako da promenim boju polja?11.08.2010. u 19:55 - pre 166 meseci
Citat:
negative7: ali mi nije jasno zasto bas tog polja,nigdje nije navedeno da uzima vrijednost tog polja,ili je?

Jeste, navedeno je, pogledaj prvi IF:
Code (csharp):

  if (e.RowIndex > -1 && e.ColumnIndex == dg.Columns["EmployeeID"].Index)
 


samo ako je indeks kolone tog polja isti kao indeks kolone "EmployeeID" (u prevodu: ako se to polje nalazi u koloni "EmloyeeID"), onda se radi sve ostalo, tj. iscrtavanje, bojenje...
 
Odgovor na temu

negative7
Ivan Raic

Član broj: 186110
Poruke: 151
*.tel.net.ba.



Profil

icon Re: DataGridView kako da promenim boju polja?12.08.2010. u 09:33 - pre 166 meseci
razumio sa hvala,jos samo jedno pitanje,zasto ova provjera da e.rowindex > -1,ta zar moze bit negativna
 
Odgovor na temu

bojan21
Bojan Zukic
Beograd

Član broj: 101113
Poruke: 251
92.244.151.*



+6 Profil

icon Re: DataGridView kako da promenim boju polja?12.08.2010. u 10:23 - pre 166 meseci
Citat:
negative7: zasto ova provjera da e.rowindex > -1,ta zar moze bit negativna


Zaglavlje (header, ovo sa nazivima kolona) ima indeks -1.
 
Odgovor na temu

negative7
Ivan Raic

Član broj: 186110
Poruke: 151
*.tel.net.ba.



Profil

icon Re: DataGridView kako da promenim boju polja?12.08.2010. u 12:27 - pre 166 meseci
sad je stvarno dosta toga mi jasnije,hvala puno
 
Odgovor na temu

[es] :: .NET :: DataGridView kako da promenim boju polja?

[ Pregleda: 3811 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

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