![]() |
|
|
#1 |
|
Guest
Posts: n/a
|
Bind Property of Child-Objecty to DataGridView
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 |
|
|
|
#2 |
|
Guest
Posts: n/a
|
Re: Bind Property of Child-Objecty to DataGridView
AFAIK a datagridview cannot bind to child properties.
Rick "Pieter" <pieterNOSPAMcoucke@hotmail.com> wrote in message news:ujaPJGDKIHA.5788@TK2MSFTNGP06.phx.gbl... > 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 > |
|
|
|
#3 |
|
Guest
Posts: n/a
|
Re: Bind Property of Child-Objecty to DataGridView
Pieter wrote:
> 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 > > 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 |
|
|
|
#4 |
|
Guest
Posts: n/a
|
Re: Bind Property of Child-Objecty to DataGridView
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.dat abinding. 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 |
|
|
|
#5 |
|
Guest
Posts: n/a
|
Re: Bind Property of Child-Objecty to DataGridView
Marc Gravell wrote:
> 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.dat abinding. > > 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 > > Oh, I'm sorry ![]() -- Duy Lam Phuong |
|
![]() |
| Thread Tools | |
| Display Modes | |
|
|
| New To Site? | Need Help? |