Saturday, March 31, 2012

subset of data using dataview?

Dear sir,

New to ASP.NET, help will be appreciated.

I need to create a XML file for product feed. In our business, one product
always belongs to more than 1 categories. I need to have a XML file like.
<product id = "105">
<Name>whatever</Name>
<Categories>
<Category name = "Category1"/>
<Category name = "Category2"/>
....
</Categories>
</product
I can use a dataset which get the data from product table. However, my
question is that how can I get a sub set data of category. The category
rows varies depends on the product id. I am thinking to use dataview filter.
The following is my code.
......
dvCategory = New DataView(dtCategory)
strView = "ProductId='"&r("ProductId")&"'"
dvCategory.RowFilter= strView
For Each rCat in dvCategory.Table.Rows
Writer.WriteStartElement("category")
Writer.WriteAttributeString("name",
rCat("CatName")&r("ProductId"))
Writer.WriteEndElement()
Next
...

It will write out all the categories instead of only those categories this
product belongs to. Any idea what did I do wrong or how can I achieve this??

Thanks in advanced.

Guoqi Zheng
Tel: 0031-23-5343545
http://www.meetholland.comThis is because you are still grabbing all the rows from the underlying
table. The underlying table never changes, but the dataview can filter which
rows you see.

You should be looking at the Item property of the DataView to get each row
as filtered from the dataview instead.

"Guoqi Zheng" <no@.sorry.com> wrote in message
news:ulC57xn3DHA.1428@.TK2MSFTNGP12.phx.gbl...
> Dear sir,
> New to ASP.NET, help will be appreciated.
> I need to create a XML file for product feed. In our business, one product
> always belongs to more than 1 categories. I need to have a XML file like.
> <product id = "105">
> <Name>whatever</Name>
> <Categories>
> <Category name = "Category1"/>
> <Category name = "Category2"/>
> ....
> </Categories>
> </product>
> I can use a dataset which get the data from product table. However, my
> question is that how can I get a sub set data of category. The category
> rows varies depends on the product id. I am thinking to use dataview
filter.
> The following is my code.
> ......
> dvCategory = New DataView(dtCategory)
> strView = "ProductId='"&r("ProductId")&"'"
> dvCategory.RowFilter= strView
> For Each rCat in dvCategory.Table.Rows
> Writer.WriteStartElement("category")
> Writer.WriteAttributeString("name",
> rCat("CatName")&r("ProductId"))
> Writer.WriteEndElement()
> Next
> ...
> It will write out all the categories instead of only those categories this
> product belongs to. Any idea what did I do wrong or how can I achieve
this??
> Thanks in advanced.
> Guoqi Zheng
> Tel: 0031-23-5343545
> http://www.meetholland.com
Hi,

> For Each rCat in dvCategory.Table.Rows
> Writer.WriteStartElement("category")
> Writer.WriteAttributeString("name",
> rCat("CatName")&r("ProductId"))
> Writer.WriteEndElement()
> Next
> ...
> It will write out all the categories instead of only those categories this
> product belongs to. Any idea what did I do wrong or how can I achieve
this??

You should loop through DataView' DataRowView:
foreach (DataRowView drv in dv)

Write...(drv["name"]);

--
Miha Markic - RightHand .NET consulting & software development
miha at rthand com
www.rthand.com

0 comments:

Post a Comment