Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Impozit venituri inchiriere locui...

Infectie masea cu un perete ramas

Finisare placi OSB interior - ex...

Ecran spart- cum transfer totul a...
 Sfat privind achiztia unei masini...

Nu pot seta frecventa RAM la 3200...

Inlocuire țeava principala a...

Vopsea membrana difuzoare
 sarea la sac

Volkswagen Jetta (Sfat / Pareri)

Recomandare caști pentru inot

imprimante Altex
 Cazier judiciar online

Banane

Robot pornire auto

vanzare auto PF catre PJ - la dis...
 

Calcul coloana in DataGrid

- - - - -
  • Please log in to reply
15 replies to this topic

#1
Sargon

Sargon

    Junior Member

  • Grup: Members
  • Posts: 119
  • Înscris: 20.09.2007
Am un datagrid populat cu PI si CI dintr-o baza de date.

Am creat o noua coloana "VI" pe care vreau sa o populez automat , atit cind se incarca formul, cit si dupa ce editez una dintre celulele Ca sau Pr. Datele din aceasta noua coloana nu vor fi salvate in baza de date, ci sint folosite de operator doar pentru verificarea corectitudinii dadelor introduse.


Codul ar fi cam asa:

  
	 
		Dim Ca As Double
		Dim Pr As Double
		Dim Val As Double
		Ca = DataGridView1.CurrentRow.Cells("CI").Value
		Pr = DataGridView1.CurrentRow.Cells("PI").Value
		Val = Ca* Pr
		DataGridView1.CurrentRow.Cells("VI").Value = Val

Problema e ca nu prea isi face treaba... nici la FormLoad si nici la CellLeave

#2
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 39,888
  • Înscris: 30.07.2003
CellValidatedEvent

#3
Sargon

Sargon

    Junior Member

  • Grup: Members
  • Posts: 119
  • Înscris: 20.09.2007
Da, merge... partial.
  Datagrid-ul meu este un subform si cind deschind acel form sau cind navighez Next si Previous... celulele coloanei VI ramin necalculate. Cred ca mai trebuie sa intoroduc codul pe undeva...

#4
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 39,888
  • Înscris: 30.07.2003
Cea mai simpla cale e sa definesti in DataTable o coloana autocalculata si nu ai treaba cu gridul deloc (el doar afiseaza).
Reflecta la asta: dataColumn3.Expression = "Column1 * Column2"

Edited by neagu_laurentiu, 20 April 2013 - 18:13.


#5
Sargon

Sargon

    Junior Member

  • Grup: Members
  • Posts: 119
  • Înscris: 20.09.2007
Am reflectat si ...cred ca acesta e codul:

Dim dt As New DataTable

	 dt.Columns.Add("Ca")
	 dt.Columns.Add("Pr")
	 dt.Columns.Add("Vl")

	 dt.Columns("VI").Expression = "Ca * Pr"
	 DataGridView1.DataSource = dt


Dar daca il adaug la Form Load...nu-mi mai afiseaza nimic

Edited by Sargon, 22 April 2013 - 15:59.


#6
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 29,370
  • Înscris: 24.02.2007
Pai ai populat cu ceva acel DataTable?

#7
Sargon

Sargon

    Junior Member

  • Grup: Members
  • Posts: 119
  • Înscris: 20.09.2007
Dani, pina la urma am reusit astfel:

M-am dus la DataTable, am apasatat click-dreapta apoi Add, Column si la Expression am scris ce trebuia...

Acum ca m-ai intrebat, mi-am dat seama ca nu am populat cu nimic acel datatable (dt)...

#8
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 29,370
  • Înscris: 24.02.2007
Click stanga/dreapta e pentru cand stii calumea cum sta treaba si vrei sa fii cat mai productiv.
Pana atunci, scrie tot codul de mana ca altfel intelegi lucrurile.

#9
Sargon

Sargon

    Junior Member

  • Grup: Members
  • Posts: 119
  • Înscris: 20.09.2007
Am am o alta problema... la un DataGridView am un combobox, dar trebuie sa-l populez cu trei coloane "Nume", "Prenume", "Varsta" si sa-mi afiseze apoi doar Nume .

Ei bine, in Access Combobox-ul permite lucrul cu mai multe coloane rezultate dintr-o interogare (de exemplu ID, Nume, Prenume, Varsta) si setam doar latimea coloanei (de obicei la ID latimea o setam 0).

Cum se face in VB 2010? Comboboxul permite doar o coloana...

Edited by Sargon, 25 April 2013 - 17:31.


#10
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 39,888
  • Înscris: 30.07.2003
Dezvoltari custom: http://www.codeproje...Column-ComboBox

#11
Sargon

Sargon

    Junior Member

  • Grup: Members
  • Posts: 119
  • Înscris: 20.09.2007
Am reusit ceva cu urmatorul cod:

Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms
Imports System.Drawing.Drawing2D
Public Class MainForm
	Private Sub MainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
		Dim dtTest As DataTable = New DataTable()
		dtTest.Columns.Add("ID", GetType(Integer))
		dtTest.Columns.Add("Nume", GetType(String))
		dtTest.Columns.Add("Prenume", GetType(String))

		dtTest.Rows.Add(1, "John", "Vasilescu")
		dtTest.Rows.Add(2, "Amy", "Popescu")
		dtTest.Rows.Add(3, "Tony", "Ionescu")
		dtTest.Rows.Add(4, "Bruce", "Teodorescu")
		dtTest.Rows.Add(5, "Allen", "Stefanescu")
		' Bind the ComboBox to the DataTable
		Me.comboBox1.DataSource = dtTest
		Me.comboBox1.DisplayMember = "Prenume"
		Me.comboBox1.ValueMember = "ID"
		' Enable the owner draw on the ComboBox.
		Me.comboBox1.DrawMode = DrawMode.OwnerDrawFixed
		' Handle the DrawItem event to draw the items.
	End Sub
	Private Sub comboBox1_DrawItem(ByVal sender As System.Object, _
								   ByVal e As System.Windows.Forms.DrawItemEventArgs) _
								   Handles comboBox1.DrawItem
		' Draw the default background
		e.DrawBackground()
		' The ComboBox is bound to a DataTable,
		' so the items are DataRowView objects.
		Dim drv As DataRowView = CType(comboBox1.Items(e.Index), DataRowView)
		' Retrieve the value of each column.
		Dim id As Integer = drv("ID").ToString()
		Dim nume As String = drv("Nume").ToString()
		Dim prenume As String = drv("Prenume").ToString()
		' Get the bounds for the first column
		Dim r1 As Rectangle = e.Bounds
		r1.Width = r1.Width / 6
		' Draw the text on the first column
		Using sb As SolidBrush = New SolidBrush(e.ForeColor)
			e.Graphics.DrawString(id, e.Font, sb, r1)
		End Using
		' Draw a line to isolate the columns
		Using p1 As Pen = New Pen(Color.Black)
			e.Graphics.DrawLine(p1, r1.Right, 0, r1.Right, r1.Bottom)
		End Using
		' Get the bounds for the second column
		Dim r2 As Rectangle = e.Bounds
		r2.X = e.Bounds.Width / 1.5
		r2.Width = r2.Width / 5
		' Draw the text on the second column
		Using sb As SolidBrush = New SolidBrush(e.ForeColor)
			e.Graphics.DrawString(nume, e.Font, sb, r2)
		End Using

		' Get the bounds for the tirdt column
		Dim r3 As Rectangle = e.Bounds
		r3.X = e.Bounds.Width / 6
		r3.Width = r3.Width / 2
		' Draw the text on the second column
		Using sb As SolidBrush = New SolidBrush(e.ForeColor)
			e.Graphics.DrawString(prenume, e.Font, sb, r3)
		End Using
		Using p2 As Pen = New Pen(Color.Black)
			e.Graphics.DrawLine(p2, r2.Left, 0, r2.Left, r2.Bottom)
		End Using
	End Sub
End Class


Dar unde ar trebui sa-l introduc si ce ar trebui sa modific astfel incit sa devina Combobox in interiorul unui DataGridView?

#12
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 39,888
  • Înscris: 30.07.2003
Vezi ca acel ComboBox din DataGridView e dintr-o clasa speciala tot cu DataGridView in fata la denumire. Trebuie sa faci tu o clasa derivata de acolo, sa suprascrii metoda de desenare si asa detii control deplin asupra afisarii. Metodologie clasica de OOP.

Edited by neagu_laurentiu, 25 April 2013 - 20:11.


#13
Sargon

Sargon

    Junior Member

  • Grup: Members
  • Posts: 119
  • Înscris: 20.09.2007
Laurentiu, iti sint recunoscator pentru raspuns, dar de data asta chiar n-am inteles nimic! Te rog sa detaliezi putin...

De unde sa fac o clasa derivata?
Cum fac aceasta clasa derivata?
Cum suprascriu metoda de desenare?

#14
Sargon

Sargon

    Junior Member

  • Grup: Members
  • Posts: 119
  • Înscris: 20.09.2007
Am gasit ceva, dar tot nu reusesc sa inteleg:

http://msdn.microsof...y/7tas5c80.aspx

#15
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 29,370
  • Înscris: 24.02.2007

View PostSargon, on 26 aprilie 2013 - 14:34, said:

De unde sa fac o clasa derivata?
Cum fac aceasta clasa derivata?
Cum suprascriu metoda de desenare?

Invatand OOP.

#16
Sargon

Sargon

    Junior Member

  • Grup: Members
  • Posts: 119
  • Înscris: 20.09.2007
Dani, da :-)   ...asta incerc sa fac. Dar ca sa inteleg nu este suficient doar sa citesc o serie de cuvinte care mi se par mai ciudate decit chineza; ca sa inteleg trebuie sa fac practic acele lucruri care ma intereseaza.

Anunturi

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate