Home All Groups Group Topic Archive Search About

Dataset and Nested Class???

Author
22 Oct 2006 4:22 AM
LW
Hi!
I have a DataSet and a class in my Web Service.

My output for example is:

<OrderInfo>
    <CustomerID>VINET</CustomerID>
    <OrderID>10248</OrderID>
    <OrderDate>07/07/1996</OrderDate>
    <ShippedDate>08/08/1996</ShippedDate>
</OrderInfo>

I would like it to be:
<OrderInfo>
    <CustomerID>VINET</CustomerID>
    <OrderID>10248</OrderID>
    <Dates>
        <OrderDate>07/07/1996</OrderDate>
        <ShippedDate>08/08/1996</ShippedDate>
    </Dates>
</OrderInfo>

What I am trying to do is group certain columns from my DataSet so
my XML output is like the one above. I was wondering if using
nested classes would be the way to go but have tried a few things
but none have worked. I tried to declare dates as an inner class but
got confused due to it being an array etc. Can anyone please help?
My code is as follows:

// the class looks like the following
public class OrderInfo {
    public string CustomerID;
    public int OrderID;
    public DateTime OrderDate;
    public DateTime ShippedDate;

    public class OrderInfo() {}


}

[WebMethod]
public OrderInfo[] GetCustomersOrdersInfo(string custID, int year)
{

    //Get the data
    DataSet _data = GetCustomersOrders(custID,  year);

    DataRowCollection _rows = _data.Tables[0].Rows;

            // Allocate the array
            OrderInfo[] info = new OrderInfo[_rows.Count];

            // Fill the array
            int i=0;
            foreach(DataRow _row in _rows)
            {
                OrderInfo o = new OrderInfo();
                o.CustomerID = _row["CustomerID"].ToString();
                o.OrderID = Convert.ToInt32(_row["OrderID"]);
                o.OrderDate = DateTime.Parse(_row["OrderDate"].ToString());
                o.ShippedDate =
DateTime.Parse(_row["ShippedDate"].ToString());

                info[i++] = o;
            }

            return info;
    }

Author
24 Oct 2006 4:23 PM
Mark Nelson
Hi LW,

I'm aware of a way to achieve the following

<OrderInfo>
     <CustomerID>VINET</CustomerID>
     <OrderID>10248</OrderID>
     <Dates>
         <OrderDate>07/07/1996</OrderDate>
         <ShippedDate>08/08/1996</ShippedDate>
     </Dates>
</OrderInfo>
Instead of nested class, you could have it as Custom Collection property of
the class. Please have Dates as the cutsom collection of the OrderInfo class,
it should work fine for you.

Pls let me know if you need more details.
Thanks & Regards,
Mark Nelson


Show quote
"LW" wrote:

> Hi!
> I have a DataSet and a class in my Web Service.
>
> My output for example is:
>
> <OrderInfo>
>     <CustomerID>VINET</CustomerID>
>     <OrderID>10248</OrderID>
>     <OrderDate>07/07/1996</OrderDate>
>     <ShippedDate>08/08/1996</ShippedDate>
> </OrderInfo>
>
> I would like it to be:
> <OrderInfo>
>     <CustomerID>VINET</CustomerID>
>     <OrderID>10248</OrderID>
>     <Dates>
>         <OrderDate>07/07/1996</OrderDate>
>         <ShippedDate>08/08/1996</ShippedDate>
>     </Dates>
> </OrderInfo>
>
> What I am trying to do is group certain columns from my DataSet so
> my XML output is like the one above. I was wondering if using
> nested classes would be the way to go but have tried a few things
> but none have worked. I tried to declare dates as an inner class but
> got confused due to it being an array etc. Can anyone please help?
> My code is as follows:
>
> // the class looks like the following
> public class OrderInfo {
>     public string CustomerID;
>     public int OrderID;
>     public DateTime OrderDate;
>     public DateTime ShippedDate;
>
>     public class OrderInfo() {}
>
>    
> }
>
> [WebMethod]
> public OrderInfo[] GetCustomersOrdersInfo(string custID, int year)
> {
>
>     //Get the data
>     DataSet _data = GetCustomersOrders(custID,  year);
>
>     DataRowCollection _rows = _data.Tables[0].Rows;
>       
>             // Allocate the array
>             OrderInfo[] info = new OrderInfo[_rows.Count];
>
>             // Fill the array
>             int i=0;
>             foreach(DataRow _row in _rows)
>             {
>                 OrderInfo o = new OrderInfo();
>                 o.CustomerID = _row["CustomerID"].ToString();
>                 o.OrderID = Convert.ToInt32(_row["OrderID"]);
>                 o.OrderDate = DateTime.Parse(_row["OrderDate"].ToString());
>                 o.ShippedDate =
> DateTime.Parse(_row["ShippedDate"].ToString());
>                
>                 info[i++] = o;
>             }
>       
>             return info;
>     }
>
Author
24 Oct 2006 8:52 PM
LW
Mark -
I am not sure how I can use CustomCollection for achieve my XML output.
Can you provide a few more details please? I am using C#.

Thanks,
LW

Show quote
"Mark Nelson" wrote:

> Hi LW,
>
> I'm aware of a way to achieve the following
>
>  <OrderInfo>
>      <CustomerID>VINET</CustomerID>
>      <OrderID>10248</OrderID>
>      <Dates>
>          <OrderDate>07/07/1996</OrderDate>
>          <ShippedDate>08/08/1996</ShippedDate>
>      </Dates>
>  </OrderInfo>
> Instead of nested class, you could have it as Custom Collection property of
> the class. Please have Dates as the cutsom collection of the OrderInfo class,
> it should work fine for you.
>
> Pls let me know if you need more details.
> Thanks & Regards,
> Mark Nelson
>
>

AddThis Social Bookmark Button