Solved

Read Anonymous Type from DataItem?

Posted on 2009-04-09
3
1,317 Views
Last Modified: 2013-11-11
I'm attempting to load a page with a datalist nested into a repeater. What I want to do is create the datasource for the datalist on the itemdatabound event of the repeater. It's working however I need to filter my datasource down based on a value in my repeater's itemtemplate (SubCategory). I would like to read the value from the e.Item.DataItem. SubCategory into a string but for whatever reason, I can't seem to get it, although I can see it in the watch window.

// aspx

<asp:Repeater ID="rptItems" runat="server" OnItemDataBound="rptItems_ItemDataBound">

                    <ItemTemplate>

                        <h2><%# Eval("SubCategory") %> /></h2>

                        <asp:DataList ID="dlSubList" runat="server"

                            RepeatDirection="Vertical" RepeatColumns="4">

                            <HeaderTemplate>

                                <ul>

                            </HeaderTemplate>

                            <ItemTemplate>

                                <li><%# Eval("ListItem")%></li>

                            </ItemTemplate>

                            <FooterTemplate>

                                </ul>

                            </FooterTemplate>

                        </asp:DataList>

                    </ItemTemplate>

                </asp:Repeater>
 

private List<ItemData> m_Items; // populated from db
 

// code for repeater data

rptList.DataSource = (from i in m_Items select new {i.SubCategory}).Distinct();

rptList.DataBind();

                                

protected void rptItems_ItemDataBound(object sender, RepeaterItemEventArgs e)

{

        string sSubCategory = e.Item.DataItem ???? How do I get the SubCategory value from the anonymous type? 

        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

        {

            DataList dl = (DataList)e.Item.FindControl("dlSubList");

            var oList = (from p in m_Items as List<PDFIndexRecord>

                         where p.SubCategory.Equals(sSubCategory)

                         select p).ToList();

            dl.DataSource = oList;

            dl.DataBind();

        }

}

Open in new window

0
Comment
Question by:Turgeson
3 Comments
 
LVL 23

Expert Comment

by:Jens Fiederer
Comment Utility
Have you tried just ToString()?  

That is a method of ANY object.
0
 
LVL 9

Expert Comment

by:Sreedhar Vengala
Comment Utility
As Jensfiederer said:
If you need a string value that should be doable. The watch window tends to display values by calling .ToString on the object. If the value in the watch window is the string you want then you should be able to get it by simply calling ToString.

var item = e.Item.DataItem.ToString();

You'd need to do a null check on the various properties as well.
0
 

Accepted Solution

by:
Turgeson earned 0 total points
Comment Utility
I tried that but it didn't work like I needed it to.  It did create a non-null object with properties and values but it didn't give me a way to access them in my code. If I put a break in the event handler and run item.SubCategory in the immediate window and it gives me nothing (no error, empty string, null), just nothing. After a lot of trial and error I was able to it to work with this using Reflection:

object oSubCategory = e.Item.DataItem.GetType().GetProperties()[2].GetValue(e.Item.DataItem, null); // 2 = SubCategory

and then use the .ToString() method on the object. Kind of a round about way to a property but it works in the context I need.
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Converting C# Objects into JSON file 7 35
Expando 4 33
C# Reverse int in fast ways 6 26
Copy/Clone an object. 9 7
This article describes relatively difficult and non-obvious issues that are likely to arise when creating COM class in Visual Studio and deploying it by professional MSI-authoring tools. It is assumed that the reader is already familiar with the cla…
Introduction Hi all and welcome to my first article on Experts Exchange. A while ago, someone asked me if i could do some tutorials on object oriented programming. I decided to do them on C#. Now you may ask me, why's that? Well, one of the re…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

6 Experts available now in Live!

Get 1:1 Help Now