|
I'm underwater on this here. First time using vb to get JSON from a web service, actually I'm scraping it off a webpage.
This is my first attempt here, seems like it parsed, but I'm not able to figure out how to unpackage the object clean. I can see the obj in the web dev, and the data is key value paired.
Dim obj() As Object = New JavaScriptSerializer().Deserialize(Of Object)(pHTML)
sPR(idx).m_partNumber = obj(idx)(0).ToString
sPR(idx).m_shortDescription = obj(idx).Item("sItemName").ToString
I found this, but I can't find the instructions on how to use it.
https://gist.github.com/monk8800/3760559[^]
This is 1 record in a JSON array that I fetched from the web service
{
"sUrl": "/Itemdesc.asp?ic=CLK-WCP-1PK",
"sItemCode": "CLK-WCP-1PK",
"sItemName": "WaveCenter Wireless Port License",
"sItemImage": "CLK-WCP-1PK_50.jpg",
"sItemOrigImage": "CLK-WCP-1PK.jpg",
"sItemPrice": "$315.00",
"sRegularPrice": "$749.99",
"sItemStock": "7",
"bAllowSaleUnit": "F",
"sMeasureDesc": "EACH",
"sItemOrder": "Order"
},
I suspect that I need to use the List of T, like a type template. I can build one based on the array record above, just have no clue how to build one in vb.
Question:
I just need to get pointed in the right direction here.
|
|
|
|
|
jkirkerx wrote: I just need to get pointed in the right direction here. I'd assume that it simply needs a class with a public property for each entry. That way reflection could be used to fill in the values; that would not work if the list if made of objects, as there are no properties to map.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
|
You're very close - each item in the obj array will be a Dictionary(Of String, Object) , so you should be able to do:
Dim obj() As Object = New JavaScriptSerializer().Deserialize(Of Object())(pHTML)
sPR(idx).m_partNumber = obj(idx)("sItemCode").ToString()
sPR(idx).m_shortDescription = obj(idx)("sItemName").ToString()
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
I woke up super early this morning, not enough sleep.
The error was from my structure not being dimensioned, SPR, so the right side could of been correct.
So I used JSON to Data Contract and made a class called dc_strekwave.
http://jsontodatacontract.azurewebsites.net/[^]
Then wrote this, I suppose I don't need the structure anymore, since the obj seems to do the trick now.
That was actually pretty easy in hindsight. very little code required once the class was made. Now I need to spit out a comma delimited file, and the prototype is done, and I can ship it today for approval.
Private Function parse_HTML_package_Store( _
ByVal pHTML As String) As Integer
Dim dwExitCode As Integer = 2
Dim sPR(0) As structure_product_records
Try
Dim obj As dc_streakwave() = New JavaScriptSerializer().Deserialize(Of dc_streakwave())(pHTML)
ReDim Preserve sPR(obj.Length - 1)
For idx As Integer = 0 To obj.Length - 1
sPR(idx) = New structure_product_records
sPR(idx).m_Url = obj(idx).sUrl
sPR(idx).m_ItemCode = obj(idx).sItemCode
sPR(idx).m_ItemName = obj(idx).sItemName
sPR(idx).m_ItemImage = obj(idx).sItemImage
sPR(idx).m_ItemOrigImage = obj(idx).sItemOrigImage
sPR(idx).m_ItemPrice = obj(idx).sItemPrice
sPR(idx).m_RegularPrice = obj(idx).sRegularPrice
sPR(idx).m_ItemStock = obj(idx).sItemStock
sPR(idx).m_AllowSaleUnit = obj(idx).bAllowSaleUnit
sPR(idx).m_MeasureDesc = obj(idx).sMeasureDesc
sPR(idx).m_ItemOrder = obj(idx).sItemOrder
Next
dwExitCode = 0
Catch ex As Exception
dwExitCode = 1
End Try
'Write the structure to a file
'Write the structure to a comma delimited file
Return dwExitCode
End Function
|
|
|
|
|
Hi
I'm having a problem in dragging and dropping multiple rows between datagrids. VB.Net can't do this by default, but i found a solution here: Drag drop multiple selected rows of datagridview with left mouse button[^]
I have put the code in a new class called DD_DataGridView.vb but I can't figure out how to use it.
I have a small test projekt, with 2 Datagridviews. Can anyone give me a hint on how to use the DD_DataGridView class from this projekt.
I'm dragging from DGV1 and dropping in DGV2.
SelectionMode is FullRowSelect
Public Class Form1
Dim DT1 As DataTable
Private rowIndexFromMouseDown As Int32
Dim MouseDwn As String
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
FillDataInGrids()
End Sub
Private Sub FillDataInGrids()
DT1 = New DataTable
'Table 1 has four columns
DT1.Columns.Add("Name", Type.GetType("System.String"))
DT1.Columns.Add("Designation", Type.GetType("System.String"))
DT1.Columns.Add("Department", Type.GetType("System.String"))
DT1.Columns.Add("Salary", Type.GetType("System.String"))
'Now Add some Rows in the first DataTable
Dim Dr As DataRow
For i = 1 To 40
Dr = DT1.NewRow
Dr("Name") = "Tom " & i.ToString("D3")
Dr("Designation") = "Developer " & i.ToString("D3")
Dr("Department") = "Engg " & i.ToString("D3")
Dr("Salary") = "100" & i.ToString("D3")
DT1.Rows.Add(Dr)
Next i
DGV2.Columns.Add("Name", "Name")
DGV2.Columns.Add("Designation", "Designation")
DGV2.Columns.Add("Department", "Department")
DGV2.Columns.Add("Salary", "Salary")
DGV2.Rows.Add(5)
'Now Bind the DataGrid to datatable 1
DGV1.DataSource = DT1
End Sub
Private Sub DGV1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles DGV1.MouseDown
rowIndexFromMouseDown = DGV1.HitTest(e.X, e.Y).RowIndex
If rowIndexFromMouseDown <> -1 Then
If Control.MouseButtons = MouseButtons.Left Then
Dim hit As DataGridView.HitTestInfo = DGV1.HitTest(e.X, e.Y)
DGV1.DoDragDrop(DGV1.Rows(hit.RowIndex), DragDropEffects.Copy)
MouseDwn = DGV1.Name
End If
End If
End Sub
Private Sub DGV2_DragEnter(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles DGV2.DragEnter
e.Effect = DragDropEffects.Copy
End Sub
Private Sub DGV2_DragOver(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles DGV2.DragOver
e.Effect = DragDropEffects.Copy
End Sub
Private Sub DGV2_DragDrop(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles DGV2.DragDrop
Dim clientPoint As Point = DGV2.PointToClient(New Point(e.X, e.Y))
Dim hit As DataGridView.HitTestInfo = DGV2.HitTest(clientPoint.X, clientPoint.Y)
Dim myType As Type = GetType(DataGridViewRow)
Dim r As DataGridViewRow = DGV1.Rows(e.Data.GetData(myType).Index)
Dim i As Integer
If hit.RowIndex = -1 Then
i = DGV2.NewRowIndex
Else
i = hit.RowIndex
End If
DGV2.Rows.Insert(i)
For j As Integer = 0 To r.Cells.Count - 1
DGV2.Rows(i).Cells(j).Value = r.Cells(j).Value
Next
MouseDwn = ""
End Sub
End Class
I guess it's pretty simple, but I have to admit that I'm more a musician than a programmer
Regards, Tommy
|
|
|
|
|
You'd copy the code into a new class. Next you'd change the "DataGridView" control to a "DD_DataGridView". The easiest way would be by rebuilding, and checking if the new control is in the toolbox. The harder way involves modifying generated code.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Thank you for answering. I forgot to tell that the 2 grids are of type DD_DataGridView.
I guess the problem is somewhere in my own code.
I can only copy one row, even when multiple rows are dragged
Regards, Tommy
|
|
|
|
|
That should have been the hardest part; if the code as is posted is correct, and nothing else changed, then the property "AllowMultiRowDrag" should only have to be set to "true", and it ought to work.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
The problem seems to be that the MouseUp event never fires in DGV1.
If I comment this line out in DGV1_MouseDown, MouseUp fires but then I can't drag and drop.
DGV1.DoDragDrop(DGV1.Rows(hit.RowIndex), DragDropEffects.Copy)
The AllowMultiRowDrag should be set to true by the MouseUp event, if more rows are selected.
So basicly it's my own code that sucks
|
|
|
|
|
tommydk wrote: The AllowMultiRowDrag should be set to true by the MouseUp event Does it have to be allowed at the latest moment? Try setting it to true when the grid is constructed
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
I finally gave up on this, and ended with this code.
Not elegant, but it works
I just pick up the selected rows in DGV1_DragLeave
Public Class Form1
Dim DT1 As DataTable
Private rowIndexFromMouseDown As Int32
Dim MouseDwn As String
Dim DragList As List(Of Integer)
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
FillDataInGrids()
End Sub
Private Sub FillDataInGrids()
DT1 = New DataTable
'Table 1 has four columns
DT1.Columns.Add("Name", Type.GetType("System.String"))
DT1.Columns.Add("Designation", Type.GetType("System.String"))
DT1.Columns.Add("Department", Type.GetType("System.String"))
DT1.Columns.Add("Salary", Type.GetType("System.String"))
'Now Add some Rows in the first DataTable
Dim Dr As DataRow
For i = 1 To 40
Dr = DT1.NewRow
Dr("Name") = "Tom " & i.ToString("D3")
Dr("Designation") = "Developer " & i.ToString("D3")
Dr("Department") = "Engg " & i.ToString("D3")
Dr("Salary") = "100" & i.ToString("D3")
DT1.Rows.Add(Dr)
Next i
'DGV2
DGV2.Columns.Add("Name", "Name")
DGV2.Columns.Add("Designation", "Designation")
DGV2.Columns.Add("Department", "Department")
DGV2.Columns.Add("Salary", "Salary")
DGV2.Rows.Add(5)
'Now Bind the DataGrid to datatable 1
DGV1.DataSource = DT1
End Sub
Private Sub DGV1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles DGV1.MouseDown
rowIndexFromMouseDown = DGV1.HitTest(e.X, e.Y).RowIndex
If rowIndexFromMouseDown <> -1 Then
If Control.MouseButtons = MouseButtons.Left Then
Dim hit As DataGridView.HitTestInfo = DGV1.HitTest(e.X, e.Y)
DGV1.DoDragDrop(DGV1.Rows(hit.RowIndex), DragDropEffects.Copy)
MouseDwn = DGV1.Name
End If
End If
End Sub
Private Sub DGV1_DragLeave(sender As System.Object, e As System.EventArgs) Handles DGV1.DragLeave
DragList = New List(Of Integer)
For counter = 0 To (DGV1.SelectedCells.Count - 1)
If Not DragList.Contains(DGV1.SelectedCells(counter).RowIndex) Then DragList.Add(DGV1.SelectedCells(counter).RowIndex)
Next
End Sub
Private Sub DGV2_DragEnter(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles DGV2.DragEnter
e.Effect = DragDropEffects.Copy
End Sub
Private Sub DGV2_DragOver(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles DGV2.DragOver
e.Effect = DragDropEffects.Copy
End Sub
Private Sub DGV2_DragDrop(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles DGV2.DragDrop
Dim clientPoint As Point = DGV2.PointToClient(New Point(e.X, e.Y))
Dim hit As DataGridView.HitTestInfo = DGV2.HitTest(clientPoint.X, clientPoint.Y)
Dim i As Integer
If hit.RowIndex = -1 Then
i = DGV2.NewRowIndex
Else
i = hit.RowIndex
End If
DragList.Reverse()
For j As Integer = 0 To DragList.Count - 1
DGV2.Rows.Insert(i)
For c As Int32 = 0 To DGV1.Rows(j).Cells.Count - 1
DGV2.Rows(i).Cells(c).Value = DGV1.Rows(DragList.Item(j)).Cells(c).Value
Next
i = i + 1
Next
DragList.Clear()
MouseDwn = ""
End Sub
End Class
|
|
|
|
|
tommydk wrote: Not elegant, but it works
I have never heard a compiler complain about elegance. If it works, everyone happy
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
i have excel sheet that one i convert to csv then i need to convert xml using macro.
please help me on this. i am totally new to u.
the xml format should come like this
<raml xmlns="raml21.xsd" version="2.1">
<cmdata xmlns="" type="plan" scope="changes" name="A">
<log user="unknown" action="created"
="" datetime="2014-11-22T13:39:54" appinfo="Nokia Siemens Networks NetAct Plan Editor">No
description
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-1009/BTS-2428/ADCE-4461 10121">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2434
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-1009/BTS-2428/ADCE-4461 10122">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2435
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-1009/BTS-2428/ADCE-4461 10123">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2436
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-1009/BTS-2429/ADCE-4461 10122">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2435
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-1009/BTS-2430/ADCE-4461 10122">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2435
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-1009/BTS-2430/ADCE-4461 10123">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2436
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-1010/BTS-2431/ADCE-4461 10122">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2435
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-1010/BTS-2433/ADCE-4461 10123">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2436
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-1013/BTS-2437/ADCE-4461 10121">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2434
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-1013/BTS-2438/ADCE-4461 10121">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2434
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-1013/BTS-2438/ADCE-4461 10122">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2435
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-1013/BTS-2439/ADCE-4461 10121">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2434
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-1013/BTS-2439/ADCE-4461 10123">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2436
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-1287/BTS-2727/ADCE-4461 10121">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2434
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-1547/BTS-2876/ADCE-4461 10122">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2435
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-1547/BTS-2876/ADCE-4461 10123">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2436
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-1547/BTS-2877/ADCE-4461 10122">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2435
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-1547/BTS-2878/ADCE-4461 10123">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2436
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-190/BTS-2185/ADCE-4461 10122">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2435
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-3/BTS-2081/ADCE-4461 10123">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2436
<managedobject class="ADCE" operation="update" version="S15"
="" distname="PLMN-PLMN/BSC-393337/BCF-81/BTS-2156/ADCE-4461 10121">
PLMN-PLMN/BSC-393337/BCF-1012/BTS-2434
|
|
|
|
|
Member 11264413 wrote: i am totally new to u. If you are "totally" new, then it'd be wise to do some tutorials first, get to know the language, and play with it.
Otherwise, you'd find a way to read the excel file (there's multiple ways to do so), and build up an XML with the data you read (there's multiple ways to do that too).
I can help if you have a specific question, but you'd have to write (and "start") on the code yourself.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Im completing a project for my VB class and kind of lost at some things.. these are the requirements:
Julia really liked the How Big is My Room app but realized it would be much
better if she could calculate the cost of ALL of her rooms in the same window. She would keep a
similar layout, but change the program to handle a list of rooms, displaying the size and cost of all
of the rooms and a total cost to resurface the floors in her entire home.
1.
She knows that if she measures the length and width of each room, she can determine the area or
square-footage. (roomSize = roomWidth * roomLength)
2.
To get the price for each room she multiplies the area of the room times the price of the material
(totalCost = roomSize * costOfMaterial)
3.
Presents the user with a picture of carpet or other flooring material (you will need to find an
images on the World Wide Web and download it. Must be in JPG,PNG,GIF,TIF format)
a.
b. Present the user the option to enter her first name
c. Present the user the option to enter her last name
d. Present the user the option to enter the room name
e. Present the user the option to enter the room width (in feet)
f. Present the user the option to enter the room length (in feet)
1) The picture must change to the corresponding floor type
2) The cost of material must change
3) The cost per room for each room must change and be displayed properly
4) The output totals should reflect the change
i. When a user changes a floor type…
Present the user the option to choose a floor type using radio buttons. The text of the radio
button should reflect the type and cost per sq/ft for that type.
g.
Present a list of rooms in a list box. Each room in the list box will be indicated by its room
name
h.
i. Use other listboxes to keep track of the length, width and total cost of a room.
Presents the user the option to submit the entry with a button by clicking with the mouse or
pressing the enter key.
j.Check to make sure all boxes are filled in. Warn the user with a message box that
states "Please enter something in all boxes" (or a similar message) -- (hint: if
textbox1.text <> "" and textbox2.text <> "" then…)
i.
Check to make sure the user has chosen a floor type. Warn the user with a message
that states "Please choose a Floor Type first!" (or a similar message) -- (hint: if
radio1.checked = true then…)
iii. Enter the room information to the appropriate list boxes
a) First Name "Julia"
b) Last Name "Anderson"
1) If the user provides the following input
iv. Output as indicated below…
k. When the user clicks the button…
4. Create a Visual Basic 2012 Program for Julia that does the following
i) "Hello Julia, the Anderson home estimate:"
ii) "Total number of Rooms: 00"
iii) "Total Square Footage: 0.0 sq/ft"
iv) "Total cost to resurface: $0.00"
a) The output should be displayed as follows
i. Wood Floors: $5.00 sq/ft
a. When the form loads, you will need to set the cost of the material and radio buttons text
Programming Assignment #3 - How Big are My Rooms?
i. Wood Floors: $5.00 sq/ft
ii. Carpet: $3.00 sq/ft
iii. "Carpet: $3.00 sq/ft"
iv. "Wood: $5.00 sq/ft"
Other notes:
• The program requires the Option Strict compiler directive
and my code I have so far is :
Option Strict On
Public Class fmResurface
Public Const dblWoodFlooring As Double = 5D
Public Const dblCarpetFlooring As Double = 3D
Dim dbldefaultWoodcost As Double
Dim dbldefaultcarpetcost As Double
Private Sub Label1_Click(sender As Object, e As EventArgs) Handles lblOutput.Click
End Sub
Private Sub Label1_Click_1(sender As Object, e As EventArgs) Handles lblOutputNumberRooms.Click
End Sub
Private Sub GroupBox1_Enter(sender As Object, e As EventArgs) Handles GBFloorType.Enter
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
dbldefaultcarpetcost = dblCarpetFlooring
dbldefaultWoodcost = dblWoodFlooring
End Sub
Private Sub Label1_Click_2(sender As Object, e As EventArgs) Handles Label1.Click
End Sub
Private Sub btnEnter_Click(sender As Object, e As EventArgs) Handles btnEnter.Click
Dim strFirstName As String
Dim strLastName As String
Dim strRoomName As String
Dim strRoomWidth As String
Dim strRoomLength As String
Dim dbltotalcost As Double
strFirstName = txtFirstName.Text
strLastName = txtLastName.Text
strRoomName = txtRoomName.Text
strRoomLength = txtRoomLength.Text
strRoomWidth = txtRoomWidth.Text
If strFirstName <> "" And strLastName <> "" And strRoomLength <> "" And strRoomName <> "" And strRoomWidth <> "" Then
MessageBox.Show("Enter data into boxes!")
End If
dbltotalcost = Val(txtRoomLength.Text) * Val(txtRoomWidth.Text)
If RBWoodFloor.Checked = False And RBCarpet.Checked = False Then MessageBox.Show("Choose a floor type!")
If RBWoodFloor.Checked = True Then dbldefaultWoodcost = dblWoodFlooring
If dbldefaultWoodcost = dblWoodFlooring Then Call lbRoomName.Items.Add(txtRoomName.Text)
If dbldefaultWoodcost = dblWoodFlooring Then Call lbRoomLength.Items.Add(txtRoomLength.Text)
If dbldefaultWoodcost = dblWoodFlooring Then Call lbRoomWidth.Items.Add(txtRoomWidth.Text)
If dbldefaultWoodcost = dblWoodFlooring Then Call lbTotalCost.Items.Add(dbltotalcost * dblWoodFlooring)
ElseIf dbldefaultcarpetcost = dblCarpetFlooring Then Call lbTotalCost.Items.Add(dbltotalcost * dblCarpetFlooring)
If RBCarpet.Checked = True Then dbldefaultcarpetcost = dblCarpetFlooring
If dbldefaultcarpetcost = dblCarpetFlooring Then Call lbRoomName.Items.Add(txtRoomName.Text)
If dbldefaultcarpetcost = dblCarpetFlooring Then Call lbRoomLength.Items.Add(txtRoomLength.Text)
If dbldefaultcarpetcost = dblCarpetFlooring Then Call lbRoomWidth.Items.Add(txtRoomWidth.Text)
End
End Sub
Private Sub lbTotalCost_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lbTotalCost.SelectedIndexChanged
End Sub
Private Sub RBWoodFloor_CheckedChanged(sender As Object, e As EventArgs) Handles RBWoodFloor.CheckedChanged
If RBWoodFloor.Checked Then pccarpet.Image = My.Resources.floor
End Sub
Private Sub RBCarpet_CheckedChanged(sender As Object, e As EventArgs) Handles RBCarpet.CheckedChanged
If RBCarpet.Checked Then pccarpet.Image = My.Resources.nice
End Sub
Private Sub pccarpet_Click(sender As Object, e As EventArgs) Handles pccarpet.Click
End Sub
Private Sub lbRoomName_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lbRoomName.SelectedIndexChanged
End Sub
Private Sub txtFirstName_TextChanged(sender As Object, e As EventArgs) Handles txtFirstName.TextChanged
End Sub
End Class
Tia Lawrence
|
|
|
|
|
Any specific question?
I'd rather not wade through each question simply to check if that's already in the code. Anyone of them in particular you're having trouble with?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Yes I'm having trouble with moving the data from the text box to the list of seperately, when it calculate and move together, I tried the if else but it keep popping up with a error.
Thanks
|
|
|
|
|
Member 11264383 wrote: moving the data from the text box to the list of seperately, Which list is that? You're already adding data from a textbox to a listbox, so that is probably not what you meant.
Member 11264383 wrote: when it calculate and move together I'd use a button. You could automatically recalculate whenever one of the entries change, but it is really a lot easier to have a button that says "calculate now".
You'd have to foreach each room, and perform the calculation.
Member 11264383 wrote: I tried the if else but it keep popping up with a error. What error?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Eddy is right in the foreach, but for recalculation, I'd have a handler that handles the on change event from each of the boxes, it can all be done in one subroutine
private sub TextboxChanged(sender as object, e as eventargs) handles txtRoomWidth.changed, txtRoomLength.changed, lstFlooringType.changed
dim SquareFootage as single = txtRoomWidth.value * txtRoomLength.value
dim CostPerFoot as single
dim RoomCost as single = Squarefootage * CostPerFoot
dim totalprice as single = 0
foreach RoomPrice as single in RoomPriceList
totalprice += RoomPrice
next
txtTotalprice.value = "Total cost is $" & totalprice
end sub
I'd have used the names you used, but I can't open both windows at once
|
|
|
|
|
This is my first web page automation project, and I don't understand a couple of things.
So I have a form with a WebBrowser Object on it, I load the form, navigate to the web page, the web page loads ...
So the DocumentCompleted event fires?
I noticed it fires for every document requested, so I isolated the page I wanted
The page loads fine first.
Then I fire my automation script, which fixes the errors on the page, fills in the textboxes
I can see the page with my values, for about a millisecond.
[The part I don't' understand]
Then the page loads again, this time with scripts errors for everything, jquery and so forth, and the CSS is blown out.
[Question]
Am I wasting my time with these event handlers,
When I write back to the WebBrowser1.DocumentText, am I forcing the page to load again?
Private Sub frm_download_Data_Load(sender As Object, e As EventArgs) Handles Me.Load
'Suppress the Script Errors
SuppressScriptErrorsOnly(WebBrowser1, False)
'Navigate the the Reseller Login Page
WebBrowser1.Navigate(ddl_URL.Text)
End Sub
Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) _
Handles WebBrowser1.DocumentCompleted
If Not (WebBrowser1.Url.AbsoluteUri = "about:blank") Then
If (e.Url.AbsolutePath = WebBrowser1.Url.AbsolutePath) Then
Select Case WebBrowser1.Url.AbsoluteUri
Case "http://page.asp"
AddHandler CType(sender, WebBrowser).Document.Window.Error, AddressOf Window_Error
http_automation_login.automate(WebBrowser1, g_userName, g_password)
RemoveHandler CType(sender, WebBrowser).Document.Window.Error, AddressOf Window_Error
End Select
End If
End If
End Sub
|
|
|
|
|
The document complete fires after every request.
So how do you tell if the page is fully loaded, so I can fire the submit?
|
|
|
|
|
jkirkerx wrote: When I write back to the WebBrowser1.DocumentText, am I forcing the page to load again?
You haven't shown that part of the code, but it's the most likely cause of the problem you described:
When you set this property, the WebBrowser control automatically navigates to the about:blank URL before loading the specified text. This means that the Navigating, Navigated, and DocumentCompleted events occur when you set this property, and the value of the Url property is no longer meaningful.
If you're reading the DocumentText , changing it, and then writing it back to the WebBrowser , the resulting document won't have the same base URL, so it won't be able to resolve any scripts, stylesheets or images which use relative paths.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
That's what happens, the page had to reload when I altered the HTML and wrote it back, causing major chaos there.
So I changed my approach on it, and changed the document using GetElementByID and SetAtrribute
Filled in the textboxes,
Figured out how to submit the page, and off I went into automation.
I've gotten quite far into the website now. Oh and yes this is sanctioned by the website owner, guess they have legacy excel spreadsheets that need data.
|
|
|
|
|
Guys..I wanna do excel data validation with XML.excel sheet contains no.of rows n columns.by using VBA macros..can u suggest me the best way to do it..if any sample code.
|
|
|
|
|