|
The example code below will create an internal data object to bind some test data to a datagridview, and then allow the user to click a cell and transfer the cells value to a textbox.
The DataGridView is named DataGridView1 TheDGV and the textbox is named TextBox1
Public Class Form1
Private _ProductList As List(Of Product) = New List(Of Product)
Private Class Products
Private _ProductList As List(Of Product)
Public Sub AddProduct(ByVal NewProduct As Product)
_ProductList.Add(NewProduct)
End Sub
End Class
Private Class Product
Private _ProductID As String
Private _Price As Double
Public Sub New(ByVal ProductID As String, ByVal Price As Double)
_ProductID = ProductID
_Price = Price
End Sub
Public ReadOnly Property ProductID() As String
Get
Return _ProductID
End Get
End Property
Public ReadOnly Property Price() As Double
Get
Return _Price
End Get
End Property
End Class
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
_ProductList.Add(New Product("Product1", 100))
_ProductList.Add(New Product("Product2", 200))
_ProductList.Add(New Product("Product3", 300))
_ProductList.Add(New Product("Product4", 400))
_ProductList.Add(New Product("Product5", 500))
TheDGV.DataSource = _ProductList
End Sub
Private Sub TheDGV_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles TheDGV.CellClick
TextBox1.Text = TheDGV.Rows(e.RowIndex).Cells(e.ColumnIndex).Value.ToString()
End Sub
Private Sub TheDGV_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles TheDGV.CellContentClick
TextBox1.Text = TheDGV.Rows(e.RowIndex).Cells(e.ColumnIndex).Value.ToString()
End Sub
End Class
[Edit: I had the wrong name of the DataGridView]
Dave
Don't forget to rate messages!Find Me On: Web| Facebook| Twitter| LinkedInWaving? dave.m.auld[at]googlewave.com
modified on Sunday, June 27, 2010 2:38 AM
|
|
|
|
|
Great job, that is really great code, i have been looking for something of this type for long time, thanks
|
|
|
|
|
the followind code is used for search items from a column cell
For Each row As Windows.Forms.DataGridViewRow In Me.DataGridView1.Rows()
Dim id as integer
id = row.cell(0).value
cmd.Parameters.Add("@id", SqlDbType.int).Value = id
next row
when i enter a value in the Column cell(0) on first row works fine but the problem is when i enter a value in second,third ... row it doesn't work as it should be.
can anyone help me to find out what i am missing ?
thanks !!!
so much of happy ending...
|
|
|
|
|
For v = 0 To DataGridView1.Rows.Count - 1
id = DataGridView1.Rows(v).Cells(0).value
'Do your thing'
Next v
|
|
|
|
|
i used ur code working same as mine, only first row cell it works not for rest !
what i am missing ?
thanks for your reply any more ideas ?
so much of happy ending...
|
|
|
|
|
Describe exactly what you want to do after you've got the cells value
in your 'id'-variable.
|
|
|
|
|
@Scubapro
i need to search data inside datagridview only , when user enter an id number in the id column in every row which should display its details .
the code is working fine but not with other rows.
i hope u understand this.
thanks.
so much of happy ending...
|
|
|
|
|
zafax_ wrote: the code is working fine
Then there is no problem?
Regards
David R
---------------------------------------------------------------
"Every program eventually becomes rococo, and then rubble." - Alan Perlis
The only valid measurement of code quality: WTFs/minute.
|
|
|
|
|
You want similar behaviour on the second column? What's the name and datatype of the second column?
I are Troll
|
|
|
|
|
@Eddy Vluggen,
see the following ...
Column name is id.
user enters id number on this column. for retrieving details .
For Each row As Windows.Forms.DataGridViewRow In Me.DataGridView1.Rows()
Dim id as integer
id = row.cell(0).value
cmd.Parameters.Add("@id", SqlDbType.int).Value = id
next row
id | name | address |age
1 | abcd | abcd |abcd
2 | 123 | rr | fr
it works only on first row cell.
thanks
so much of happy ending...
|
|
|
|
|
..and you want the same functionality in the second row cell? Something like this?
For Each row As Windows.Forms.DataGridViewRow In Me.DataGridView1.Rows()
Dim searchVal as String
searchVal = row.cell(1).value
cmd.Parameters.Add("@name", SqlDbType.NVarChar).Value = searchVal
next row
That would be flawed too, since you'd still be adding a lot of SqlParameter objects to the command. Can you post the entire method, including the parts where you create and execute the SqlCommand ?
I are Troll
|
|
|
|
|
items search through storedprocedure
the entire code here...
Private Sub getItems()
c.ConS()
c.Cm.Open()
For Each row As DataGridViewRow In Me.ItemsDataGridView.Rows
Dim cod As Integer
cod = row.Cells(0).Value
Dim cmd As New SqlCommand("getItems", c.Cm)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@cod", int).Value = cod
Dim da As New SqlDataAdapter
da.SelectCommand = cmd
da.Fill(dat)
Me.bind.DataSource = dat
Me.ItemsDataGridView.DataSource = bind
Next row
End Sub
so much of happy ending...
|
|
|
|
|
If I understood correctly then you want to use this code to (also) filter on the "name" column? Can you post the source of the stored procedure "getItems"?
I are Troll
|
|
|
|
|
getitems()is the query which retrieves data
i need to filter cod in id column .
i dont know y u want see the code for stored procedure since its just a query
......
select id ,A,B,C from Items where Code =@cod
so much of happy ending...
|
|
|
|
|
Its not clear what you are trying to do, but the code you are using will only iterate each row, if you are trying to also iterate each cell then do the following;
For Each row As DataGridViewRow In DataGridView.Rows
For Each cell As DataGridViewCell In row.Cells
Next
Next
|
|
|
|
|
Your foreach loop enumerates all rows, so you will be adding a parameter (called "@id") for each of them; I don't think that is appropriate, and from your symptom description it seems the first one sticks.
Suggestion: either try using the "current row" rather than all rows, or search all rows for the (first) one that actually holds some data in cell 0.
|
|
|
|
|
Luc Pattyn well i been trying ur idea but if u show me by peace code will be great !!
thanks
so much of happy ending...
|
|
|
|
|
Don't know how it's supposed to work since you did nit tell us that.
What do you expect to be in the Parameters collection?
Try stepping through in the debugger and seeing if your expectations are met.
Regards
David R
---------------------------------------------------------------
"Every program eventually becomes rococo, and then rubble." - Alan Perlis
The only valid measurement of code quality: WTFs/minute.
|
|
|
|
|
zafax_ Wrote:
when i enter a value in the Column cell(0) on first row works fine but the problem is when i enter a value in second,third ... row it doesn't work as it should be.
What is the error description?
Use <pre lang="vb"> Visual Basic Code Here.</pre>
|
|
|
|
|
Using Visual Studio 2008 and Access 2007
I have tried several different ways to track Material Activity. Table MatActivity has a field for MoveFromGUID and MoveFromType as well as Move2GUID and Move2Type. The possible combinations are: From Well to Well; from Well to StorageYard; from StrorageYard to Well and from StorageYard to StorageYard. I tried it with two tables the Well table and a separate Location table but no luck. There are 4 types of wells so I have tried to add the storageyards into the well table and just use a different code for the welltype to indicate it as a storageyard.
The following code gets me the sample data:
SELECT m.MatActivityID, m.TasksID, m.MoveFromGUID, w.Well, m.MoveFromType, m.Move2GUID, m.Move2Type, m.MaterialsID, m.Units, w.WellID, w.WellType FROM Well as w INNER JOIN MatActivity as m ON w.WellID =m.MoveFromGUID;
The following code trying to set another relationship from the well table fails to pull any data:
SELECT m.MatActivityID, m.TasksID, m.MoveFromGUID, w.Well, m.MoveFromType, m.Move2GUID, m.Move2Type, m.MaterialsID, m.Units, wWellID, w.WellType FROM Well as w INNER JOIN MatActivity as m ON (w.WellID = MatActivity.Move2GUID) AND (w.WellID = m.MoveFromGUID);
Do I need to change the table MatActivity? It basically is to document from and to locations and the units of each material being moved. There can be anywhere from several hundred units of one type of material to 30-40 types of material with only a couple of units each. It is related to the Tasks table which provides info on the crew to move the material and the dates and time assigned and actually moved. The Material table provides the description of the material to be moved.
If I need to rethink the process and change the entire table structure to be able to show the actual to and from locations and remainder of data now is the time before I get much further into the project. Any suggestions and assistance greatly appreciated
|
|
|
|
|
that looks like a database question, not a VB/VB.NET question.
|
|
|
|
|
Hmmm ... interesting problem.
Let me offer another view of the situation.
If you create a simple table with:
DateTimeStamp, Status, FromLoc, FromType, ToLoc, ToType
(You can use the status to be: Requested, In-Transit, Complete)
Then you can create 2 other tables:
Locations: (LocID, Description)
MatTypes: (MatID, Description)
With this design, you should be able to answer queries like:
"Which material needs to move from Storage to Well #1 today ?"
"What materials have arrived in Storage over the past week ?"
"What are all the materials that are currently in transit ?"
I'm sure I haven't considered everything, but you should get the idea.
Hope this helps.
David
|
|
|
|
|
That is essentially what I already have with the exisitng tables. Of course there is a lot more information in each table, the well table contains cost center codes, subdivision, longitute and lattitude and is a many to one relationship with the Lease table. The Locations table which I switched and tried to add to the well table still has a cost center and the address of the Location I have placed in the longitude/lattitude fields with the name of the storage yard in the Well field
When I had both tables no problem pulling out the well (which is actually the well number in the particular lease generally coded like: 12-34, 9-1, or 7-50- this relates to the location on a acre gridlines which each square mile of oil field leases are divided into) or the location from the location table. It always seemed to succeed when I went from well to storage or storage to well. But well to well or storage to storage I never got any data - though I have manually created the data so I know I have records for testing purposes.
I was thinking I needed to add something like:
w.well WHERE w.WellID = m.MovefromGUID AND w.well WHERE w.WellID = m.Move2GUID
somewhere in the INNER JOIN's so I am experimenting with that right now. Any other suggestions are certainly helpfull.
Some of the questions we need to ask are:
What materails were moved from storage to wells
What materials moved from wells to storage
What crews moved the materials
Total quantity of each material moved by day by week, etc.
So yeah there is a lot that needs to be gathered and displayed which is why I'm beginning to question my initial database design and wondering if I need to change it dramatically now to save more headaces later.
Years ago with Access 2 and then Access 2000 I finally remember doing something like what I wanted. Using the hlp for Access 2007 is nigh on useless - it is more oriented toward promoting its features than offerring help. I found an old copy of Office 2000 and installed the help and went into it for Access and what I THINK I need is some form of UNION query. That should allow me to keep the seperate tables for Wells and Locations and still be able to pull out either data in wither field. If I run into problems I'll upload a sample of the code later.
Larry
modified on Friday, June 25, 2010 10:07 PM
|
|
|
|
|
At my company we use an instrument which connects to a laptop through ATEN USB to Serial Bridge. What I'm trying to figure out how to do is loop through the COM ports and determine which one the bridge is connected to (similar to the windows device manager that will show the devices name with which COM port it is connected to in parentheses). Anyone have any guidance on how to do this through VB.NET? Even C# code would work as I can probably figure out how to port it. Thanks in advanced.
|
|
|
|
|
There is no standard for this; RS232C defines connectors, pin assignments, voltage levels, bit patterns, but does not describe the content of the data being transmitted. So the best you could do, I guess, is this:
1. connect your peripheral to a known port, open its SerialPort, keep HandShake none;
2. now check the behavior of your periphera;
2a. look for the state of control lines (CDHolding, CtsHolding, DsrHolding);
2b. disconnect and look again;
2c. hopefully there is a difference.
3. optional: check the response on some command; use the device manual!
3a. send a harmless string (best something that would mean "identify yourself"
3b. and watch what the normal reply is.
4. now create code that enumerates the ports, one by one, looking for one (or more) that match the above findings.
|
|
|
|