Cyberactiva - webmaster tutorials, programming and videogames tricks

webmaster menu webmaster menu webmaster menu webmaster menu webmaster menu webmaster menu webmaster menu webmaster menu
  

return a paired lists or arraylist from a webservice

return a paired lists or arraylist from a webservice
I have a webservice that needs to return a paired list, such as created by an
arraylist. The problem appears to be in serlizing the xml. Any help on how
to return a paired list or arraylist would be gratly appreciated.

***********code

_
Public Function getMyData() As ArrayList
Dim lvSqlString = "SELECT * FROM PRODUCTS"
Dim myData As New ArrayList

Dim lvSqlCmd As New MySqlCommand
Dim SqlConnection1 As New MySqlConnection
Dim rdr As MySqlDataReader
lvSqlCmd = SqlConnection1.CreateCommand
SqlConnection1.ConnectionString = gvConnectString
lvSqlCmd.CommandText = lvSqlString
SqlConnection1.Open()
rdr = lvSqlCmd.ExecuteReader()
Dim bozo As String = ""
Try
Do While rdr.Read
myData.Add("ProductID")
myData.Add(rdr("ProductID"))
myData.Add("ProductDesc")
myData.Add(rdr("ProductDesc"))
myData.Add("ProductGraphic")
myData.Add(rdr("ProductGraphic"))
Loop
Finally
If Not (rdr Is Nothing) Then
rdr.Close()
rdr = Nothing
End If
If Not (SqlConnection1 Is Nothing) Then
SqlConnection1.Close()
SqlConnection1 = Nothing
End Try

Return myData
End Function

*********** end code
Eveready wrote:

> I have a webservice that needs to return a paired list, such as
> created by an arraylist. The problem appears to be in serlizing the
> xml. Any help on how to return a paired list or arraylist would be
> gratly appreciated.

You can see a returned ArrayList on a client application as an object
array. This means there isn't really a problem with the XML - it just
comes through as an array of object.

If you put this object array (object[]) into an ArrayList by running
through it with a ForEach loop you will then have an ArrayList at the
client.

(Not as clean as having an ArrayList pass through of course, but this
is one option)


--
Deepak Shenoy
http://shenoyatwork.blogspot.com
Deepak, thanks for your reply - but being new to .net, could you provide an
example of what you are talkin about, Please.
thnx

"Deepak Shenoy" wrote:

> Eveready wrote:
>
> > I have a webservice that needs to return a paired list, such as
> > created by an arraylist. The problem appears to be in serlizing the
> > xml. Any help on how to return a paired list or arraylist would be
> > gratly appreciated.
> You can see a returned ArrayList on a client application as an object
> array. This means there isn't really a problem with the XML - it just
> comes through as an array of object.
> If you put this object array (object[]) into an ArrayList by running
> through it with a ForEach loop you will then have an ArrayList at the
> client.
> (Not as clean as having an ArrayList pass through of course, but this
> is one option)
> --
> Deepak Shenoy
> http://shenoyatwork.blogspot.com
Eveready wrote:

> Deepak, thanks for your reply - but being new to .net, could you
> provide an example of what you are talkin about, Please.
> thnx

Eveready,

I used your code (the code you posted, but with fields ProductID,
ProductName and UnitPrice from the NorthWind Products database) in a
web service and wrote a C# client for it. At the client end, I added
the web service as a web reference, and used the following code:

private void button1_Click(object sender, EventArgs e)
{
ArrService.Service serv = new ArrService.Service();

object[] arr = serv.GetMyData();

int arrSize = arr.Length;
// always in threes
int index = 1;
while (index < arrSize)
{
productBindingSource.Add(new Product((int)arr[index],
arr[index + 2].ToString(), arr[index + 4]));
index += 6;
}

dataGridView1.AutoGenerateColumns = false;

}

(My idea was to have the grid show three columns instead of one)

The Product class is defined as:

public class Product
{
private int FProductID;

public int ProductID
get { return FProductID; }
set { FProductID = value; }
}
private string FProductName;

public string ProductName
get { return FProductName; }
set { FProductName = value; }
private double FUnitPrice;

public double UnitPrice
get { return FUnitPrice; }
set { FUnitPrice = value; }

public Product(int Id, string Name, object Price)
ProductID = Id;
ProductName = Name;
if (Price == null)
UnitPrice = 0;
else
UnitPrice = Double.Parse( Price.ToString() );
}

What I've done is: In an array list passed objects of three different
types: Integer, String and Double. THese three are decoded into a
single class named Product and the Grid displays the list of products
(through the BindingSource).

Note that I pass an ArrayList on the server but use an object[] on the
client.

Hope this helps,

--
Deepak Shenoy
http://shenoyatwork.blogspot.com
Thank You !
Ev

"Deepak Shenoy" wrote:

> Eveready wrote:
>
> > Deepak, thanks for your reply - but being new to .net, could you
> > provide an example of what you are talkin about, Please.
> > thnx
> Eveready,
> I used your code (the code you posted, but with fields ProductID,
> ProductName and UnitPrice from the NorthWind Products database) in a
> web service and wrote a C# client for it. At the client end, I added
> the web service as a web reference, and used the following code:
> private void button1_Click(object sender, EventArgs e)
> {
> ArrService.Service serv = new ArrService.Service();
> object[] arr = serv.GetMyData();
> int arrSize = arr.Length;
> // always in threes
> int index = 1;
> while (index < arrSize)
> {
> productBindingSource.Add(new Product((int)arr[index],
> arr[index + 2].ToString(), arr[index + 4]));
> index += 6;
> }
>
> dataGridView1.AutoGenerateColumns = false;
> }
> (My idea was to have the grid show three columns instead of one)
> The Product class is defined as:
> public class Product
> {
> private int FProductID;
> public int ProductID
> get { return FProductID; }
> set { FProductID = value; }
> private string FProductName;
> public string ProductName
> get { return FProductName; }
> set { FProductName = value; }
> private double FUnitPrice;
> public double UnitPrice
> get { return FUnitPrice; }
> set { FUnitPrice = value; }
> public Product(int Id, string Name, object Price)
> ProductID = Id;
> ProductName = Name;
> if (Price == null)
> UnitPrice = 0;
> else
> UnitPrice = Double.Parse( Price.ToString() );
> }
> What I've done is: In an array list passed objects of three different
> types: Integer, String and Double. THese three are decoded into a
> single class named Product and the Grid displays the list of products
> (through the BindingSource).
> Note that I pass an ArrayList on the server but use an object[] on the
> client.
> Hope this helps,
> --
> Deepak Shenoy
> http://shenoyatwork.blogspot.com
Register for freeMembers Area
Web MarketingLast Web Marketing
Web MarketingLast Programming Tips
Web MarketingLast News


Web Marketing Links and links exchange .