Chirurgia spinală minim invazivă
Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical. Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale. www.neurohope.ro |
Calcul coloana in DataGrid
Last Updated: Apr 28 2013 17:02, Started by
Sargon
, Apr 20 2013 11:21
·
0
#1
Posted 20 April 2013 - 11:21
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 |
#3
Posted 20 April 2013 - 17:42
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
Posted 20 April 2013 - 17:58
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
Posted 22 April 2013 - 15:57
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. |
#7
Posted 22 April 2013 - 18:59
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
Posted 23 April 2013 - 17:53
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
Posted 25 April 2013 - 17:28
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
Posted 25 April 2013 - 17:39
Dezvoltari custom: http://www.codeproje...Column-ComboBox
|
|
#11
Posted 25 April 2013 - 19:50
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
Posted 25 April 2013 - 20:10
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
Posted 26 April 2013 - 14:34
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
Posted 26 April 2013 - 19:39
#15
Posted 27 April 2013 - 21:21
|
#16
Posted 28 April 2013 - 17:02
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
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users