Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Info Coronavirus/Vaccinare vs Fake News

Cosmin Seleși, la Pro TV, di...

taxa transport la EasyBox - eMag ...

The Men Who Sold the World Cup (2...
 La multi ani @WestPoint!

Problema joc de pe Steam

Inteligența artificiala la l...

La multi ani Finlanda !
 Servicii de streaming cu accent p...

R.I.P. Kirstie Alley

Ce lupa de cap cu lumina si lenti...

Card cumparaturi venituri alte su...
 Cot PPR in loc de cot PT tub rigid?

Centrala Ariston nu incalzeș...

Avertisment cu amenda și pun...

Boxa portabila
 

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,841
  • Î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,841
  • Î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,264
  • Î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,264
  • Î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,841
  • Î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,841
  • Î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,264
  • Î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 endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

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