Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / .NET Framework / ADO.NET / November 2007

Tip: Looking for answers? Try searching our database.

Bind Property of Child-Objecty to DataGridView

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Pieter - 16 Nov 2007 09:17 GMT
Hi,

I want to bind a proeprty of a child object to a DataGridView, but it
doesn't work.

For instance:
Imagen that I have an object Company, and this object company has a child
object Address.
Address has a property Street.

Now I want to bind a list oc Company objects to my DataGridView, and show
there Street proeprty.
So you would think you would have to add Address.Street as DataPropertyName
in the DataGridViewTextBoxColumn, but this doesn't show the value...

Does anybody knows how to do this?

Thansk a lot in advance,

Pieter
Rick - 16 Nov 2007 11:36 GMT
AFAIK a datagridview cannot bind to child properties.

Rick

> Hi,
>
[quoted text clipped - 17 lines]
>
> Pieter
Duy Lam - 16 Nov 2007 12:58 GMT
> Hi,
>
[quoted text clipped - 16 lines]
>
> Pieter

Hi, I think you can bind child property in this view but I don't know
how to edit these property (in your problem)
This is the way: use Repeater (or DataList) and template
In your Visual Studo, open web page containning DataGridView (in Code
mode - not Design mode). May be your code like this

<asp:Repeater Id="companyGridView"
OnItemDataBound="companyGridView_ItemDataBound">
<HeaderTemplate><table><tr><td>Company</td></tr></HeaderTemplate>
<FooterTemplate></table></FooterTemplate>
<ItemTemplate>
<tr><td><asp:Label Text="<%# Eval("CompanyName") %>">
<asp:Repeater Id="addressGridView">
<HeaderTemplate><table><tr><td>Address</td></tr></HeaderTemplate>
<FooterTemplate></table></FooterTemplate>
<ItemTemplate>
<tr><td><asp:Label Text="<%# Eval("CompanyAddress") %>">
</td></tr>
</ItemTemplate>
</asp:Repeater>
</td></tr>
</ItemTemplate>
</asp:Repeater>

In your code behind:

protected void companyGridView_ItemDataBound(object sender,
RepeaterItemEventArgs e) {
    if( e.Item.ItemType == ItemType.Item || e.Item.ItemType ==
ItemType.AlternatingItem) {
       Company boundObj = e.Item.DataItem as Company; // your Company
object which is binding
    Repeater rpt = e.Item.FindControl("addressGridView") as Repeater; //
ger reference
    rpt.DataSource = Companay.Address; // Address must be a boundable
object (sorry if I don't use this term exactly)  (IList, IEnumberable,
DataTable, ..)
    rpt.DataBind();
}
}

The important thing is ItemDataBound event, you registter that event and
do anything you want
Marc Gravell - 16 Nov 2007 13:11 GMT
The "DataGridViewTextBoxColumn" (and the "windowsforms" group in the
cross-post) indicates that this is windows-forms, not asp.net, but
this is an easy mistake to make when it isn't clear.

For the OP's benefit - if you limit yourself to a single appropriate
group (such as windowsforms) then this type of mixup is avoided. For
future questions, you might want to consider
microsoft.public.dotnet.framework.windowsforms.databinding.

DataGridView (winform) only supports direct properties for columns.
Adding a facade method could be an option if you own the class. If
not, there are some other (more complex) tricks you can use to provide
a runtime shadow property. Let me know if you need this, but note that
a facade method is preferable for simplicity, i.e.

public string EmployeeName { // facade to Employee.Name
 get {return Employee.Name;}
 set {Employee.Name = value;}
}

Marc
Duy Lam - 27 Nov 2007 14:52 GMT
> The "DataGridViewTextBoxColumn" (and the "windowsforms" group in the
> cross-post) indicates that this is windows-forms, not asp.net, but
[quoted text clipped - 17 lines]
>
> Marc

Oh, I'm sorry :)

Signature

Duy Lam Phuong


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.